我有一个表面上看起来很简单的问题,但是我似乎找不到解决方案。我有一个名为SystemTasksService
的Service类,它有两个导致问题的方法,下面是代码:
@Service
@PropertySource("classpath:application.properties")
public final class SystemTasksService {
Map<String, String> getSeedRecordUnderReview(){
return new HashMap<>();
}
Map<String, String> getProduceTutorialUnderReview(){
return new HashMap<>();
}
}
然后在另一个类中调用这些方法,如下所示:
private Map<String, String> seedRecordUnderReview = systemTasksService.getSeedRecordUnderReview();
private Map<String, String> produceTutorialUnderReview = systemTasksService.getProduceTutorialUnderReview();
使用@Autowired
注解(它是一个Spring Boot应用程序)注入了SystemTaskService,问题就不在这里,因为我可以在此服务上调用其他方法就很好了(只是不用于初始化一个全局变量)与声明的行相同。
有人知道是什么原因造成的吗?
此致
答案 0 :(得分:0)
好吧,似乎在对象创建过程中,自动装配的部分是在全局变量初始化之后出现的,因此当我在调用自动装配的systemListenerService之前,它会给出nullpointer异常。我通过使用@PostConstruct
注释来解决此问题,如下所示:
@PostConstruct
private void init(){
seedRecordsUnderReview = systemTasksService.getSeedRecordsUnderReview();
produceTutorialsUnderReview = systemTasksService.getProduceTutorialsUnderReview();
}
在构造对象之后,已经自动装配了SystemTaskService Bean,因此调用systemTasksService实例上的方法不再给出nullpointer异常,因为该变量现在引用了自动装配的对象。