Я работал над проектом Spring Boot 1.5. У него был следующий тип конфигурационного класса:
@Configurtion
public class Foo{
@Autowired
private DependencyA dependencyA;
@Bean
public DependencyA getDependency(){
return new DependencyAImpl();
}
}
Это нормально работало в Spring Boot 1.5, но когда я обновился до Spring Boot 2, это больше не работало, приложение не запускалось с исключением «Не найден компонент типа DependencyA». Я подумал, что это могло быть потому, что bean-компонент не был создан, когда Spring пытался внедрить зависимость, и поэтому в качестве «взлома» добавил @Lazy к инъекции dependencyA. Это сработало.
В свете этого, каков порядок выполнения класса конфигурации. Это: A) Сначала создайте bean-компоненты, а затем внедрите зависимости B) Попробуйте создать экземпляр со всеми зависимостями, а затем создайте любые bean-компоненты в конфигурации.