SpringBoot自动装配和starter

📅 2026/6/29 19:15:41
SpringBoot自动装配和starter
自动装配SpringBootApplication 注解中包含了EnableAutoConfiguration注解这个注解底层又是import 注解导入自动配置类导入选择器AutoConfigurationImportSelecor 这个选择器会去读取约定配置文件从文件中一次性加载所有候选自动配置类把这些配置类交给IOC容器在 refresh() 中由 ConfigurationClassPostProcessor 解析每个自动配置类上都有条件注解满足条件 配置类里的 Bean 生效 自动把组件注入IOC容器流程EnableAutoConfiguration注解导入AutoConfigurationImportSelector调用selectorImports方法读取Meta-inf/spring 文件夹下的AutoConfiguration.importes文件拿到所有自动配置类根据配置类上的条件注解进行过滤符合条件的被加载为bean完成自动装配条件注解按需装配避免冲突如ConditionalOnMissingBean允许用户自定义bean覆盖默认beanStarterStarter一键集成了某种场景所需要的所有组件配置。我们只要引入这个starter 就能使用该场景不用去找依赖解决依赖。别人已经帮我们配好了。原理就是SpringBoot将组件和配置打包好利用spi 机制和spring的条件装配在spring启动的时候完成一些复杂bean 的创建。简化maven依赖配置不用解决依赖冲突如何自定义一个starter?写好自动配置类带上configuration 注解条件注解绑定配置文件注解写好属性绑定类负责配置信息属性的绑定创建starter工程引入自定义配置类模块在meta-inf/spring 文件夹中创建auto configuration.imports文件写入自动配置类全限定名将starter打包为什么要定制starter独立于业务的功能模块封装成starter可以被各个项目复用。比如发送短信、解决微服务项目的数据库连接池配置问题redis引入、鉴权组件等