SpringBoot启动原理

Posted fanblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot启动原理相关的知识,希望对你有一定的参考价值。

 技术图片

 

SpringBoot自动配置模块

该配置模块的主要使用到了SpringFactoriesLoader,即Spring工厂加载器,该对象提供了loadFactoryNames方法,入参为factoryClass和classLoader,即需要传入工厂类名称和对应的类加载器,方法会根据指定的classLoader,加载该类加器搜索路径下的指定文件,即spring.factories文件,传入的工厂类为接口,而文件中对应的类则是接口的实现类,或最终作为实现类,所以文件中一般为如下图这种一对多的类名集合,获取到这些实现类的类名后,loadFactoryNames方法返回类名集合,方法调用方得到这些集合后,再通过反射获取这些类的类对象、构造方法,最终生成实例。

技术图片

 

SpringBoot自动化配置关键组件关系图

mybatis-spring-boot-starterspring-boot-starter-web等组件的META-INF文件下均含有spring.factories文件,自动配置模块中,SpringFactoriesLoader收集到文件中的类全名并返回一个类全名的数组,返回的类全名通过反射被实例化,就形成了具体的工厂实例,工厂实例来生成组件具体需要的bean。

之前我们提到了EnableAutoConfiguration注解,其类图如下:

 技术图片

可以发现其最终实现了ImportSelector(选择器)和BeanClassLoaderAware(bean类加载器中间件),重点关注一下AutoConfigurationImportSelectorselectImports方法。

 

 

技术图片

技术图片

 

以上是关于SpringBoot启动原理的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot启动原理分析

springboot之启动原理解析

SpringBoot启动过程原理

SpringBoot启动流程分析:SpringBoot自动装配原理实现

springboot之启动原理解析

SPRINGBOOT启动原理(基于2.x版本)