繁体   English   中英

Spring Boot bean创建和依赖注入的顺序是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM