У меня есть следующий сценарий, в котором я сталкиваюсь с исключением нулевого указателя, потому что bean-компонент не инициализируется и приводит к сбою на моем сервере, который не загружается. В аннотированном методе PostConstruct есть недавно введенный вызов, который не работает. Тот же вызов выполняется в другом методе, которого нет в PostConstruct, который выполняется правильно и не вызывает никаких проблем.
@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? Внедрение зависимостей работает только в компонентах Spring, а не в других классах, которые не являются компонентами Spring. Кроме того, это не работает, когда вы создаете экземпляр класса, используяnew
; вам нужно позволить Spring управлять бобами. - person Jesper   schedule 25.05.2017class DesignContextService
также должен быть аннотирован с помощью@Service
или@Component
, чтобы Spring правильно его автоматически подключил. Может быть, это ваша проблема? - person mingos   schedule 25.05.2017NullPointerException
в своем методеinit()
или какую-либо другую ошибку из весны? - person P.J.Meisch   schedule 25.05.2017