Я работал над проектом 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». Я подумал, что это может быть потому, что бин не был создан, когда Spring пытался внедрить зависимость, и поэтому, как хак, добавил @Lazy к внедрению зависимости. Это сработало.
В свете этого, каков порядок выполнения класса конфигурации. Это:
A) Сначала создайте bean-компоненты, а затем внедрите зависимости
Б) Попробуйте создать экземпляр со всеми зависимостями, а затем создайте любые bean-компоненты в конфигурации.