[英]What is the order of Spring Boot bean creation and dependency injection?
我当时在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尝试注入依赖项时未创建该Bean,因此,作为“ hack”,在依赖项注入中添加了@Lazy。 这很有效。
鉴于此,配置类的执行顺序是什么。 是吗:A)首先创建bean,然后注入依赖项B)尝试创建具有所有依赖关系的实例,然后在配置中创建任何bean。
有趣的发现;
配置类也是Spring Bean。
通常,配置类首先被扫描和实例化。 这必须是了解其他配置和bean的起点。
但是,您已添加@Autowire进行场注入。 如我所说,配置类也是Spring Bean。 因此,spring需要首先解决其依赖性。 陷入僵局。
回答你的问题。 配置类首先在其他Bean之前实例化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.