SpringBoot3自动配置流程及原理、SpringBootApplication注解详解

参考尚硅谷课程: https://www.yuque.com/leifengyang/springboot3/vznmdeb4kgn90vrx
https://www.yuque.com/leifengyang/springboot3/lliphvul8b19pqxp

1.自动配置流程及原理

在这里插入图片描述

核心流程总结:
1.导入starter,就会导入autoconfigure包
2.autoconfigure 包里面 有一个文件 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,里面指定的所有启动要加载的自动配置类
3.@EnableAutoConfiguration会自动的把上面文件里面写的所有自动配置类都导入进来。xxxAutoConfiguration 是有条件注解进行按需加载
4.xxxAutoConfiguration给容器中导入一堆组件,组件都是从 xxxProperties中提取属性值
5.xxxProperties又是和配置文件进行了绑定

效果:导入starter、修改配置文件,就能修改底层行为。

一句话总结就是: 导入一个场景,会导入autoconfigure包,autoconfigure包里面的AutoConfiguration.imports文件指定了所有的配置类,这些配置类会被@EnableAutoConfiguration全部导入到容器中,同时各个配置类和各种xxxProperties类进行了绑定,xxxProperties又和配置文件进行了绑定,这样一来,修改配置文件就能修改底层行为。

详细流程: 以导入starter-web为例
1.导入starter-web:导入了web开发场景
1)场景启动器导入了相关场景的所有依赖:starter-json、starter-tomcat、springmvc
2)每个场景启动器都引入了一个spring-boot-starter,核心场景启动器。
3)核心场景启动器引入了spring-boot-autoconfigure包。
4)spring-boot-autoconfigure里面囊括了所有场景的所有配置。
5)只要这个包下的所有类都能生效,那么相当于SpringBoot官方写好的整合功能就生效了。
6)SpringBoot默认却扫描不到 spring-boot-autoconfigure下写好的所有配置类。默认只扫描主程序所在的包。那么这些配置类是怎么被注入到容器中的呢? --> EnableAutoConfiguration:SpringBoot使用@Import将所有的配置类注入到容器中

2.主程序:@SpringBootApplication
1)@SpringBootApplication由三个注解组成@SpringBootConfiguration、@EnableAutoConfiguratio、@ComponentScan
2)SpringBoot默认只能扫描自己主程序所在的包及其下面的子包,扫描不到 spring-boot-autoconfigure包中官方写好的配置类
3)@EnableAutoConfiguration:SpringBoot 开启自动配置的核心。

  1. 是由@Import(AutoConfigurationImportSelector.class)提供功能:批量给容器中导入组件。 --> AutoConfigurationImportSelector类里面写了方法来实现批量导入自动配置类
  2. SpringBoot启动会默认加载 140多个配置类。
  3. 这140多个配置类来自于spring-boot-autoconfigure下 META-INF/spring/org.springframework.boot.autoconfi
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值