springboot的自动配置原理

最近在学习springboot的相关知识,在学到springboot的自动配置部分时,结合B站视频中的讲解以及自己查阅资料,阅读相关源码,特此记录一下学习过程,顺便当做学习笔记以便后续查阅。
springboot相较于spring的一个重大改进就是springboot可以实现自动配置,比如Tomcat、springMVC以及web开发的常见场景,省去了繁琐的xml配置文件,下面介绍一下自动配置的详细过程。
首先从xxxApplication.java主程序中可以看到@SpringBootApplication注解,这个注解是springboot的核心注解,用于开启自动配置。
在这里插入图片描述
因此我们就要从这个注解入手,查看它的底层实现,只有了解了它的内部逻辑和实现,才能知道springboot自动配置的原理,于是Ctrl+B进入该注解:
在这里插入图片描述
可以看到它的内部由这些注解构成,所以我们首先要了解每个注解的含义,视频中老师并未对上面的四个注解做详细解释,应该是与自动配置不是直接相关的,比如@Target和@Retention主要是指明注解的作用目标以及保留位置。因此我们主要看@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan这三个注解。@SpringBootConfiguration代表当前是一个注解类,和@Configuration功能相似;@ComponentScan顾名思义是用于包扫描的,表示当前自动扫描当前配置类的包路径下的所有配置类(注意:是扫描该配置类所在包内的所有配置类,超出范围则无法扫描,可以通过该注解的value属性设置指定的要进行扫描的包);接下来我们进入@EnableAutoConfiguration注解:
在这里插入图片描述
可以看到除了前面相同的四个注解,@EnableAutoConfiguration还包括了@AutoConfigurationPackage和@Import两个注解,@Import是用于在容器中导入了一个AutoConfigurationImportSelector组件,然后通过该组件加载一个文件,这个文件写死了springboot一启动就需要加载的配置类,有127个,然后调用相关方法获取到这些配置类,并利用工厂加载这些配置类包含的所有组件,并导入到容器中。需要注意的是,这些配置类会按照条件装配规则(@Conditional)进行按需配置。@AutoConfigurationPackage则是将该注解下的类所在的包作为自动配置包,也就是说@SpringBootApplication就是通过该注解将主程序中的配置类xxxApplication所在的包设置为自动配置包,将包内的所有组件,包括配置类本身以及配置类中注册的所有组件导入容器中。
以上就是我理解的springboot的自动装配的大概过程,有写的不对的地方欢迎各位大佬指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值