SpringBoot启动过程中,如何把注解中的bean存放IOC容器中的

近期在看源码的东西,感觉比较复杂,springBoot较于springmvc,注解方式取代配置文件如何运行的。谁能详细说一下?

阅读 3k
2 个回答

在SpringBoot中定义的配置类加上@EnableAutoConfiguration注解,就会自动装配加载spring.factory中定义的配置类。 @EnableAutoConfiguration注解的原理是使用@Import导入一个ImportSelector实现类,该实现类处理引入spring.factory中的配置类,具体的源码可以查看AutoConfigurationImportSelector

备注:@Import注解是Spring引入外部类的一种实现方式,其可以引入如下三种外部类:

  1. ImportSelector实现类
  2. 一个普通的class对象(使用@Configuration标注)
  3. ImportBeanDefinitionRegistrar实现类

具体引入的源码在ConfigurationClassPostProcessor中,这个类是一个BeanFactoryProcessor,也就意味着它在加载spring的bean xml文件之后执行,在spring bean实例化前执行。所以如果同时配置spring.xml的bean文件和基于SpringBoot的自动配置。后者不会被引入,因为BeanFactroy中已有该bean定义。

这不一样的吗,之前的版本就已经开始有 bean 的注入了啊。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题