SpringBoot自动化配置原理和自定义starter方式
SpringBoot自动化配置原理和自定义starter

SpringBootConfiguration
底层是一个Configuration,表示启动类也是一个配置类,可以在内部定义相关Bean
ComponentScan
表示组件扫描,默认会扫描启动类包及子包下Spring能识别的组件
EnableAutoConfiguration
底层是一个Import注解

该注解中导入 AutoConfigurationImportSelector类,该类最终实现了ImportSelector


该类中有一个 selectImports 方法会被调用,

selectImports()方法底层调用getAutoConfigurationEntry()方法,获取可自动配置的配置类信息集合

getAutoConfigurationEntry()方法通过调用getCandidateConfigurations(annotationMetadata, attributes)方法获取在配置文件中配置的所有自动配置类的集合

获取所有基于 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中配置类的集合
并筛选满足starter和各种Condtional条件的全类名,封装成一个字符串数组加载到内存中
启动类会通过run方法去创建与初始化Spring容器,在初始化时会把上面注解加载到内存中的字符串数组对应的内容,创建成对象注入到Spring容器,至此就完成了自动化装配
自定义starte
创建自定义starter模块 方法名-spring-boot-starter(进行依赖管理)
把所有的依赖统一管理起来
创建autoconfigure模块 方法名-spring-boot-autoconfigure
在starter中引入autoconfigure (只需要引入starter起步依赖即可)
在autoconfigure模块方法名-spring-boot-autoconfigure中完成自动配置
定义一个自动配置类,在自动配置类中将所要配置的bean都提前配置好
定义配置文件,把自动配置类的全类名定义在配置文件(META-INF/spring/xxxx.imports)中
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring boot集成Go-FastDFS实现图片上传删除等功能实现
这篇文章主要介绍了Spring boot集成Go-FastDFS实现图片上传删除等功能实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-04-04
解读System.getProperty("ENM_HOME")中的值从哪获取的
这篇文章主要介绍了解读System.getProperty("ENM_HOME")中的值从哪获取的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12
Java线程间协作wait、notify和notifyAll详解
这篇文章主要介绍了Java线程间协作wait、notify和notifyAll详解,在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信,尽管关于wait和notify的概念很基础,它们也都是Object类的函数,但用它们来写代码却并不简单,,需要的朋友可以参考下2023-10-10


最新评论