SpringBoot启动原理
Posted fanblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot启动原理相关的知识,希望对你有一定的参考价值。
SpringBoot自动配置模块
该配置模块的主要使用到了SpringFactoriesLoader
,即Spring工厂加载器,该对象提供了loadFactoryNames
方法,入参为factoryClass和classLoader,即需要传入工厂类名称和对应的类加载器,方法会根据指定的classLoader,加载该类加器搜索路径下的指定文件,即spring.factories
文件,传入的工厂类为接口,而文件中对应的类则是接口的实现类,或最终作为实现类,所以文件中一般为如下图这种一对多的类名集合,获取到这些实现类的类名后,loadFactoryNames
方法返回类名集合,方法调用方得到这些集合后,再通过反射获取这些类的类对象、构造方法,最终生成实例。
SpringBoot自动化配置关键组件关系图
mybatis-spring-boot-starter
、spring-boot-starter-web
等组件的META-INF文件下均含有spring.factories
文件,自动配置模块中,SpringFactoriesLoader
收集到文件中的类全名并返回一个类全名的数组,返回的类全名通过反射被实例化,就形成了具体的工厂实例,工厂实例来生成组件具体需要的bean。
之前我们提到了EnableAutoConfiguration
注解,其类图如下:
可以发现其最终实现了ImportSelector
(选择器)和BeanClassLoaderAware
(bean类加载器中间件),重点关注一下AutoConfigurationImportSelector
的selectImports
方法。
以上是关于SpringBoot启动原理的主要内容,如果未能解决你的问题,请参考以下文章