SpringBoot自动装配的原理

1.利用springboot创建一个项目

在这里插入图片描述

@SpringBootApplication注解

在这里插入图片描述
注意三个注解:

  • @ComponentScan 扫描包,添加到spring的IOC容器中.
  • @SpringBootConfiguration
  • @EnableAutoConfiguration 开启自动装配

在spring中有一些列的@Enable注解,他的主要作用就是把相关组件的Bean装配到IOC容器中.如果是基于JavaConfig的形式完成Bean的装载,则必须要使用@Configuration和@Bean的注解.@Enable注解本质就是对这两个注解的封装.通常@Enable注解都会伴随着@Import注解.
比如:@EnableWebMVC,@EnableScheduling
在这里插入图片描述
因此,使用@Enable注解之后,spring会解析到@Import导入的配置类,从而根据这个配置类中的描述来实现Bean的装配.

@EnableAutoConfiguration注解

在这里插入图片描述
@AutoConfigurationPackage 这个注解作用是将使用该注解的类所在的包及其子包下所有组件扫描到spring的IOC容器中.
@Import注解会将AutoConfigurationImportSelector类注入到spring的IOC容器

AutoConfigurationImportSelector类

在这里插入图片描述
这个类实现了ImportSelector接口,要实现selectImports方法.和@Configuration不同的是,ImportSelector可以实现批量装配,还可以根据上下文来决定哪些类能够给IOC容器初始化.
在这里插入图片描述
进入getAutoConfigurationEntry()方法
在这里插入图片描述
这个方法会扫描到指定路径下的文件接地得到需要装配的配置类.重点关注getCandidateConfigurations()方法:
在这里插入图片描述
进入loadFactoryNames()方法:
在这里插入图片描述
进入loadSpringFactories()方法:
在这里插入图片描述
最终发现,它会读取MATA-INF/spring.factories文件里的内容.
在这里插入图片描述
这个文件里包含各种配置类.随便打开一个:
在这里插入图片描述
@EnableConfigurationProperties是属性配置,也就是说我们可以按照约定在application.properties文件中配置rabbitMQ的参数.
@Condition 条件装配注解

总结一下:

  • 1.@SpringBootApplication
  • 2.@EnableAutoConfiguration
    • @Import(AutoConfigurationImportSelector.class)实现配置类的导入
    • AutoConfigurationImportSelector 的selectImports方法实现选择性批量配置类的装配
      • 通过spring提供的SpringFactoriesLoader机制,扫描classpath路径下META-INF/spring.factories,读取需要实现自动装配的配置类.
  • 通过条件筛选的方式,把不符合条件的配置类移除,最终实现自动装配.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值