java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot自动化配置原理和自定义starter

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

作者:又旅行又开拓的绳匠..

SpringBoot自动配置机制主要通过-spring-boot-starter和-spring-boot-autoconfigure创建自定义starter模块,使用EnableAutoConfiguration注解加载自动配置类,启动类通过创建Spring容器完成自动化装配

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)中

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文