SpringBoot自动装配原理

我们在创建springboot项目的时候,发现只需要一个主启动类就可以运行整个springboot项目,我们一起来看一下springboot是如何自动装配和启动的。

一、

springboot的主启动类调用方法run()来启动项目。run方法传了3个参数,appName(启动类名称),source(资源),而这个source是通过@SpringBootApplication来指定配置资源,并返回一个ApplicationContext对象。

二、

@SpringbootApplication这个注解是一个组合注解,包含了3个注解,分别是

(1)@SpringBootConfiguration(底层是@Configuration注解,修饰的类是一个IOC容器)

(2)@EnableAutoConfiguration(自动装配注解),也是一个组合注解,包含@AutoConfigurationPackage和@Impot两个注解。 

(3)@Component(包扫描注解,扫描当前类所在的包及其子包下包含的注解,将@Controller/@Service/@Component/@Repository等注解加载到IOC容器中)

三、 

@Import({AutoConfigurationImportSelector.class})是自动装配的核心注解,传入一个AutoConfigurationImportSelector类,从字面意识上来看,自动导入选择器。

AutoConfigurationImportSelect类中的selectImports方法调用了getCandidateConfigurations方法,从这个绿色的字体中可以看出,该方法是从META-INF/spring.factories中找配置文件。

我们可以找到该类所处的包下META-INF/spring.factories文件 

 

 

发现 spring.factories文件是一组组的key=value的形式,包含了key为EnableAutoConfiguration的全类名,value是一个AutoConfiguration类名的列表,以逗号分隔。

在主启动类运行run方法时,就会间接调用selectImports方法,找到所有JavaConfig配置类全限定名对应的class,然后将所有自动配置类加载到IOC容器中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值