【理解springboot自动装配原理】

理解springboot自动装配原理:

最近读了小马哥(mercyblitz)Springboot编程思想(核心篇),有了一些心得和感悟,分享给大家:

1. 官网介绍了激活自动装配的方法:
* 文档提到激活自动化装配的注解 @EnableAutoConfiguration 和 @SpringBootApplication,
* 将二者选其之一标注在 @configuration 类上,但并没有说明如何装配@Configuration 类,
* 如果熟悉Spring Framework,会想到三种方法,即:
XML元素<context:component-scan>、注解 @Import 和 @ComponentScan,
而这三种装配手段又需要Spring应用上下文引导,
前者可采用ClassPathXmlApplicationContext加载,后两者需要AnnotationConfigApplicationContext注册。
2. 理解 @SpringBootApplication 注解语义:
* @SpringBootApplication 被用于激活
@EnableAutoConfiguration、@ComponentScan 和@Configuration三个注解的特性。
其中,@EnableAutoConfiguration 负责激活 Spring Boot自动装配机制,
@ComponentScan 激活@component的扫描,@Configuration声明被标注为配置类。
* 官方源码告诉我们 @SpringBootApplication 注解等同于 
@EnableAutoConfiguration、@Configuration、@ComponentScan注解,且他们均使用默认属性,
* 以Spring Boot 2.0.2.Release实现为例,实际上 @SpringBootApplication 等价于
@EnableAutoConfiguration、@ComponentScan注解、@SpringbootConfiguration,
不过@ComponentScan 并非使用了默认值,而是添加了排除的TypeFilter实现:TypeExcludeFilter 和AutoConfigurationExcludeFilter,
前者是由Spring Boot1.4引入,用于查找BeanFactory中已注册的TypeExcludeFilter Bean,作为代理执行对象,
而后者从SpringBoot 1.5 开始支持,用于排除其他同时标注@Configuration 和@EnableAutoConfiguration 的类。
* 从SpringBoot 1.4 开始,@SpringBootApplication 注解不再标注Configuration,
而是@SpringbootConfiguration,不过两者在运行上没有差异,类似于对象之间的继承,
@Configuration注解上标注了@Component,@Configuration 实际上是@Component 的派生注解,
同理,@SpringbootConfiguration 标注了@Configuration。
* 因此三者之间的层次关系如下:
 @Component,
        @Configuration,
              @SpringbootConfiguration。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值