我遇到以下情況,我正在運行到空指針異常,因爲bean未初始化並導致失敗,導致我的服務器無法啓動。 在PostConstruct註釋的方法中有一個新引入的調用失敗。另一種不在PostConstruct中的方法正在執行相同的調用,該方法正確執行並且不會引起任何問題。Spring bean未注入
@Component
@Lazy
@Primary
class Parent{
@Autowired
private DesignContextService designContextService;
@PostConstruct
private void init(){
designContextService.getMethod();// fails
}
private void someFunction(){
designContextService.getMethod();// executes successfully
}
}
}
Class DesignContextService{
@Autowired
private ContextService contextService;
public void getMethod(){
contextService.isContextCreated();
...
}
// Below classes present in another jar
class ContextService{
@Inject
public ContextAdapter contextAdapter;
public void isContextCreated(){
contextAdapter.isEstablished();// contextAdapter is null . Throws exception here
}
}
}
錯誤堆棧跟蹤:
at
Caused by org.springframework.beans.factory.BeanCreationException : Error creating bean ...
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:137)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1620)
是'Parent'定義爲一個Spring bean?依賴注入只適用於Spring bean,不適用於不是Spring bean的其他類。另外,當你使用'new'創建類的實例時,它不起作用;你需要讓Spring管理這些bean。 – Jesper
是的。我將糾正示例代碼。 – jetty
'class DesignContextService'也應該用'@Service'或'@ Component'註釋,以便Spring能夠正確自動裝載它。也許這是你的問題? – mingos