SpringBoot自动配置原理

1.@SpringBootApplication底层封装了三个注解:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan

 阅读源码发现:SpringBoot在启动的时候,会自动的加载META-INF/spring.factoriesMETA-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports这两个文件中的信息,这两个文件中配置的其实就是类的全类名,这份配置文件最终会被读取出来,并且通过@Import注解加载到IOC容器当中

加载完成之后,会自动封装到configurations这个List<String>的集合当中

 

 然后再将其封装到String类型的数组当中,String类型的数组当中封装的数据最终就是要被加载到SpringBoot IOC容器中的bean或者配置类

 

总结:@EnableAutoConfiguration是SpringBoot实现自动化配置的核心注解,其底层封装了一个@Import注解,这个注解当中指定了ImportSelector这个接口的实现类——AutoConfigurationImportSelector,AutoConfigurationImportSelector这个实现类实现了ImportSelector这个接口中的方法——selectImports(),这个方法的返回值是一个String类型的数组,在这个数组当中封装的就是我要导入到Spring IOC容器中的类的全类名,在AutoConfigurationImportSelector方法中加载了两个文件:META-INF/spring.factories(早期,3.0版本后被彻底移除了)META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,现在我们要导入的配置类,都定义在META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports下,这份文件下定义的就是配置类的全类名,在这个文件当中,我们就可以通过@Bean注解来声明一个一个的bean对象,最终,springboot在启动的时候就会加载这个配置文件中所配置的这些类,然后,将所配置的这些类封装到String类型的数组当中,最终通过@Import这个注解全部加载到spring的IOC容器当中,交给IOC容器进行管理

 

 注意:META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports中的类并不是全部会被加载到IOC容器当中,这涉及到下边要讲解的条件装配注解@Conditional

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值