springboot自动配置文件读取以及源码分析

今天来讲讲springboot自动配置文件读取以及源码分析

在这里插入图片描述
springboot启动之后
1.首先进入@springbootApplication(如上图)
里面的**@EnableAutoConfiguration注解
2.点进
@EnableAutoConfiguration**里面
在这里插入图片描述
@Import导入的这个类点进去(这个类的就是将所有的自动配置类导进去容器中)
3.进去点进去(点圆圈标注的那个类)在这里插入图片描述
这个类实现了变种的ImportSelector类,就是DeferredImportSelector类

这个类会根据它里面的getImportGroup()方法判断
在这里插入图片描述
4.如果这个方法返回的类实现了Group接口,那么他就会调用本类的process()方法在这里插入图片描述
然后调用这个方法里面的getAutoConfigurationEntry方法获取所有的有效配
置类

这个方法里面是调用getCandidateConfigurations方法(这个方法是获取所有的127个配置类)在这里插入图片描述
4.接下来看看是怎样读取到这127个配置类的

在这里插入图片描述
getCandidateConfigurations方法里面的loadFactoryNames方法是获取这127个配置类的关键,
在这里插入图片描述
loadFactoryNames方法里面的loadSpringFactories方法先去所有的jar包和类路径下去找META–INF/spring.factories
有哪些jar包有它需要的spring.factories

1.spring-boot
2.spring-beans
3.spring-boot-autoconfigure
没错,就是这3个jar包

获取完这3个jar包里面的所有的扩展类,

loadFactoryNames方法后继续调用getOrDefault方法完成一个过滤

怎样过滤的呢
loadSpringFactories
.getOrDefault会做一个配置类名过滤,只需要EnableAutoConfigurations为key值的配置类

最后剩下127个有效自动配置类
在这里插入图片描述
getCandidateConfigurations执行完之后再执行getConfigurationClassFilter().filter(configurations)
或取真正有用的配置类

这样process方法筛选出项目中需要的有效配置类

5.调用完process方法之后获得的是有效的并且项目中用得到的的配值类后,
再继续调用selectImports()方法,对这些有效类名做个排序什么的

最后,我自己对于springboot自动配置类读取流程的理解就是这些,可能理解的害不够透彻,欢迎大神来补充,欲知springboot自动配置原理且看下篇博客。

在这里插入图片描述


版权声明:本文为weixin_50798782原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。