使用 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
。这意味着您不应该使用构造函数来实例化您的 DecryptionService
。 DecryptionService
应定义为 @Service
并注入另一个组件(@Component
、@Controller
等),您将从那里调用用于解密数据的特定方法。
我正在重新使用旧的、独立的基于 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
。这意味着您不应该使用构造函数来实例化您的 DecryptionService
。 DecryptionService
应定义为 @Service
并注入另一个组件(@Component
、@Controller
等),您将从那里调用用于解密数据的特定方法。