我当时正在做一个关于 Spring Boot 1.5 的项目。它具有以下类型的配置类:
@Configurtion
public class Foo{
@Autowired
private DependencyA dependencyA;
@Bean
public DependencyA getDependency(){
return new DependencyAImpl();
}
}
Run Code Online (Sandbox Code Playgroud)
这在 Spring Boot 1.5 中工作得很好,但是当我升级到 Spring Boot 2 时,这不再工作,应用程序将无法启动,并出现异常“找不到 DependencyA 类型的 bean”。我认为这可能是因为 Spring 尝试注入依赖项时未创建 bean,因此,作为“黑客”,将 @Lazy 添加到 dependencyA 注入中。这有效。
鉴于此,配置类的执行顺序是怎样的?是:A)首先创建bean,然后注入依赖项B)尝试创建具有所有依赖项的实例,然后在配置中创建任何bean。