У меня есть проблема, и вот в чем ее суть: (в цикле задействовано больше классов, но это можно представить так)
@service
public class serviceDispatcher{
@Autowired
private BeanA a;
@Autowired
private BeanB b;
public BeanA getBeanA(){
return a;
}
public BeanB getBeanB(){
return b;
}
}
@Service
public class BeanA{
@Autowired
ServiceDispatcher sd;
@PostConstruct
private void init(){
sd.getBeanB().method;
}
}
поэтому, очевидно, я получаю нулевой указатель, поскольку BeanB b еще не разрешен. Я также использовал afterPropertiesSet, и это то же самое. Мой вопрос заключается в том, есть ли способ запустить метод init() после инициализации всего контекста, чтобы я не получил этот нулевой указатель? Я осознаю тот факт, что эта циклическая зависимость является проблемой и должна быть решена, но я просто рефакторинг огромного проекта для использования Spring DI, и изменение дизайна, логики и бизнеса требует длительного процесса запроса, чтобы это было сделано другие команды.
ServiceDispatcher
требуетсяBeanA
в качестве зависимости, а взаменBeanA
требуетсяServiceDispather
в качестве зависимости. Думаю, вам стоит пересмотреть свой подход. - person akortex91   schedule 15.07.2018@Lazy
. Вы можете прочитать здесь для получения дополнительной информации: baeldung.com/circular-dependencies-in-spring< /а> - person akortex91   schedule 15.07.2018