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

 

 

 


 

 

posted @ 2021-06-28 17:50  夜未央111  阅读(53)  评论(0)    收藏  举报