springboot原理初识
1 pox.xml 及其相关依赖

父依赖 spring-boot-starter-parent
spring-boot-starter-parent 父依赖 spring-boot-dependencies

spring-boot-dependencies包含大量的jar包依赖
2.启动器 spring-boot-starter-xxx

SpringBoot将所有的功能场景都抽取出来,做成一个个的starter (启动器),只需要在项目中引入这些starter即可,所有相关的依赖都会导入进来 , 我们要用什么功能就导入什么样的场景启动器即可 ;我们未来也可以自己自定义 starter;
3.主启动类

只有SpringBootApplication注解 和run启动方法(本文章只涉及注解,run方法看下篇)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4.SpringBootApplication注解自动装配原理初探
SpringBootApplication.java中注解

其中核心注解为SpringBootConfiguration和EnableAutoConfiguration
SpringBootConfiguration 表示SpringBoot的配置类

这里的 @Configuration,说明这是一个配置类 ,配置类就是对应Spring的xml 配置文件;

到这里@Component注解就到头了,这就说明,启动类本身也是Spring中的一个组件而已,负责启动应用!
@EnableAutoConfiguration 自动装配

这里有一个@AutoConfigurationPackage 自动配置包 进入

这里有@Import注解导入自动配置包的注册类
分类2.4版本之前:
@Import({AutoConfigurationImportSelector.class}) :给容器导入组件 ;
AutoConfigurationImportSelector :自动配置导入选择器,那么它会导入哪些组件的选择器呢?我们点击去这个类看源码:
1、这个类中有一个这样的方法getCandidateConfigurationshu获取候选配置
![]()
![]()
2、这个方法又调用了 SpringFactoriesLoader 类的静态方法!我们进入SpringFactoriesLoader类loadFactoryNames() 方法
3、我们继续点击查看 loadSpringFactories 方法
![]()
4.spring.factories
![]()
在springboot的自动装配包下
部分内容如下

webmvcConfiguration
![]()
可以看到这些一个个的都是JavaConfig配置类,而且都注入了一些Bean
总结:Springboot自动装配就是从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值
将这些值作为bean导入ioc容器,判断某些条件这些类就可以生效,自动装配完成。
补:注意springboot2.4以后将@Import({AutoConfigurationImportSelector.class}) 加入EnableAutoConfiguration中







浙公网安备 33010602011771号