springBoot自动配置的全过程
作者:amcomputer
这篇文章主要介绍了springBoot自动配置的全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
什么是自动配置
以前整合spring + mybatis框架时候,需要加很多的bean,
比如说sqlSessionFactory等等现在springboot帮我们干了,
我们只需要引入对应的starter就可以了。
springBoot可以帮我们配置好了一些bean. 如mysql, mogondb相关操作等等,目前有100多个。
不需要我们一个一个的import:
单个导入效率太低了。
如何实现批量导入?
@import(AutoConfigurationImportSelector.class)
通过AutoConfigurationImportSelector.selectImports方法导入配置类集合。
当然其他jar里面也可以有配置类,不一定都会在starter里面。
需要其他jar里面主动告诉springBoot,说明是配置类:文件路径为meta-inf/spirng.factories
寻找步骤
1 jar找文件
meta-inf/spirng.factories
2 找key
3 values是配置类
4 去重
5 classLoader加载类
找到自动配置类名字
6 过滤无关的配置类
先看依赖,看pom里面是否有,然后再看是否有关键类。
有135个配置类,无关配置类很多,
通过spring-autoconfigure-metadata.propertes文件
先其他jvm, 在启动spring容器,导致速度比较慢。
其他
springBoot3.0后,使用了gravVM技术,在编译时候就开始把bean扫描出来。
后面启动时候直接注册加载bean,不需要再进行扫描
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。