springBoot是如何实现自动装配的

目录

1 什么是自动装配

2 Spring自动装配原理

 2.1 @SpringBootConfiguration

​编辑 2.2 @EnableAutoConfiguration

 2.2.1 @AutoConfigurationPackage

2.2.2  @Import({AutoConfigurationImportSelector.class})

 2.3 @ComponentScan


1 什么是自动装配

        自动装配就是将官方写好的的配置类加载到spring容器,然后根据配置类生成一些项目所需要的bean对象。(对于springBoot来讲,就是从spring.factories文件获取到对应需要进行自动装配的类,并生成相应的bean对象交给spring管理。)

2 Spring自动装配原理

要想搞明白spring自动装配的原理,就需要从我们springBoot上启动类的注解入手。

@SpringBootApplication 

该注解是springBoot启动类的一个注解,是一个组合注解,主要作用就是说明这个类是springBoot的主配置类。该注解主要由三个注解组成

@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan

 2.1 @SpringBootConfiguration

这个注解包含了@Configuration,@Configuration里面又包含了一个@Component,也就是说这个注解标记在哪个类上,那么这个类就是spring的配置类。

 2.2 @EnableAutoConfiguration

这个注解是开启了自动配置的功能

 2.2.1 @AutoConfigurationPackage

这个注解的作用就是将主配置类(就是有SpringBootApplication标注的类)的所在包以及子包里面的所有容器扫描并加载到spring容器里面,这也就是为什么平时在springboot开发时,我们缩写的controller层和service路径都与朱配置类同级或者次级的原因。

2.2.2  @Import({AutoConfigurationImportSelector.class})

上个注解是将所有的组件都加载到了容器里面,那这个注解就是将所有需要自动装配的类以全类名的形式返回,那么接下里我们就来说一说哪些是需要自动装配的类。

1.AutoConfigurationImportSelector类中有一个selectImports()方法,该方法又调用了getAutoConfigurationEntry这个方法,如下:

 2 getAutoConfigurationEntry()方法中又调用了getCandidateConfigurations()这个方法

 3 在getCandidateConfigurations()方法中又调用了loadFactoryNames()方法

 4 在loadFactoryNames()方法中又调用了loadSpringFactories()方法

 5 在loadSpringFactories() 方法中加载了META-INF目录下的spring.factories文件

 6 在META-INF/spring.factories这个文件里面的数据是以键=值的方式存储,然后解析这些文件

 2.3 @ComponentScan

这个注解的作用就是扫描当前包及子包的注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值