Springboot自动装配源码分析

Springboot自动装配源码分析
1.从@SpringbootApplication点进去
在这里插入图片描述
2.可以看到核心的三个注解
@SpringbootConfiguration
@EnableAutoConfiguration
@ComponentScan
显然,实现自动装配的注解是@EnableAutoConfiguration,意为开启自动装配
至于另外两个,@SpringbootConfiguration其实和@Configuration注解一样,用于标志这是个配置文件;@ComponentScan是开启组件扫描,这里不加赘述。

从@EnableAutoConfiguration点进去
在这里插入图片描述
3.可以看到该注解上有两个重要的注解:@AutoConfigurationPackage@Import(AutoConfigurationImportSelector.class);
这里起核心作用的是@Import(AutoConfigurationImportSelector.class)注解里面的AutoConfigurationImportSelector类,意为‘自动配置导入选择器‘,另一个注解自行查阅。
从AutoConfigurationImportSelector点进去

4.该类中有一个至关重要的方法:getCandidateConfiguration。从这个方法点进去
在这里插入图片描述
5.可以看到,这个方法会加载jar包中META-INF/spring.factories文件中配置的配置对象,自动配置定义的功能。
在这里插入图片描述
6.springboot中实现自动装配的在这个文件中,可以看到Springboot实现了AOP/PropertyPlaceholder/FreeMarker/HttpMessageConverter/jackson/DataSource/DataSourceTransactionManager/DispatcherServlet/WebMvc等等功能的自动装配。

在这里插入图片描述

总结:.springboot的自动装配原理
Springboot的自动装配是因为在启动类上贴有@SpringbootApplication注解,这个注解表明该类为一个spring的配置类。
项目启动时,会将贴有该注解的类的所在包名下的所有组件扫描加载到spring容器。
@SpringBootApplication注解内部是@SpringBootApplication = (默认属性)@SpringbootBootConfiguration+ @EnableAutoConfiguration + @ComponentScan的三大注解的集成

  1. @ComponentScan:开启组件扫描
    2.@SpringbootBootConfiguration:作用等同于@Configuration注解,用于表明这是一个spring的配置类
    3.@EnableAutoConfiguration:通过@import注解内部导入AutoConfigurationImportSelector(自动配置导入选择器),该类中有个getCandidateConfigurations方法加载jar包中META-INF/spring.factories文件中配置的配置对象,自动配置定义的功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值