Рассмотрим код:Зачем автоматически обрабатывать поля через autowireCapableBeanFactory?
public class MyClass {
@Autowired
private SomeInterface variable;
public void init(ServletContext servletContext) {
WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext); //debug point here
context.context.getAutowireCapableBeanFactory().initializeBean(this, getClass().getSimpleName());
}
}
Когда я остаюсь при отладке автоматического связывания выполняет нормально, но когда я ставлю точку отладки прочь я NPE в variable
. Кажется, что Весна выполняет асинхронную автоустановку. Есть ли способ гарантировать, что после того, как все поля будут инициализированы?
Примечание
Да вызов initializeBean(this, getClass().getSimpleName())
это не лучшая практика использования пружинного, но у меня нет другого пути, потому что класс экземпляра в другой библиотеке, которая не используется Spring.
Вы должны использовать 'SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext (this);' а не 'initializeBean'. –