首页 > 编程开发 > Java    日期:2026-07-14 / 浏览

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

总结

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

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章