使用 Spring 引导服务作为批处理作业中的依赖项的空指针异常

Null Pointer Exception using Spring Boot service as a dependency in a batch job

我正在重新使用旧的、独立的基于 AWT 的 Java class 备份和恢复 mysql 数据库。

它需要做的一件事是解密它从属性文件中读取的密码。

此逻辑包含在 Spring 启动应用程序中。

我在独立 class 中实例化加密服务和解密器,如下所示:

DecryptionService decryptionService = new DecryptionService();

解密服务使用@AutoWired注解创建解密器:

@Autowired
private IRSADecryptor decryptor;

现在,我 运行 Eclipse 来自与服务相同的项目。

当我尝试如下解密密码时:

    String decryptedPassword = decryptionService.decryptTextUsingProductKeys("abc");

调试器显示解密服务为空。

这里是堆栈跟踪的前几行:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at com.ap.services.decryption.service.DecryptionService.decryptTextUsingProductKeys(DecryptionService.java:21)
    at com.ilcore.util.SosaMaintenanceJFrame.jButtonDatabaseBackupActionPerformed(SosaMaintenanceJFrame.java:529)
    at com.ilcore.util.SosaMaintenanceJFrame.actionPerformed(SosaMaintenanceJFrame.java:207)

我很确定我的处理方式不正确,但我不想导入解密逻辑。我有哪些选择?

@Autowired 注释不会创建您的解密器对象,但会尝试找到该类型的 Bean 并将其注入您的 DecryptionService。这意味着您不应该使用构造函数来实例化您的 DecryptionServiceDecryptionService 应定义为 @Service 并注入另一个组件(@Component@Controller 等),您将从那里调用用于解密数据的特定方法。