SpringBoot自动装配和starter
2026/6/29 19:15:40 网站建设 项目流程

自动装配

SpringBootApplication 注解中包含了EnableAutoConfiguration注解,这个注解底层又是import 注解,导入自动配置类导入选择器(AutoConfigurationImportSelecor ),这个选择器会去读取约定配置文件,从文件中一次性加载所有候选自动配置类,把这些配置类交给IOC容器,在 refresh() 中由 ConfigurationClassPostProcessor 解析,每个自动配置类上都有条件注解,满足条件 ,配置类里的 @Bean 生效 ,自动把组件注入IOC容器

流程

EnableAutoConfiguration注解,导入AutoConfigurationImportSelector

调用selectorImports方法,读取Meta-inf/spring 文件夹下的AutoConfiguration.importes文件,拿到所有自动配置类,根据配置类上的条件注解进行过滤符合条件的被加载为bean完成自动装配

条件注解

按需装配,避免冲突,如ConditionalOnMissingBean,允许用户自定义bean覆盖默认bean

Starter

Starter一键集成了某种场景,所需要的所有组件,配置。我们只要引入这个starter ,就能使用该场景,不用去找依赖,解决依赖。别人已经帮我们配好了。

原理就是,SpringBoot将组件和配置打包好,利用spi 机制和spring的条件装配,在spring启动的时候,完成一些复杂bean 的创建。

简化maven依赖配置,不用解决依赖冲突

如何自定义一个starter?

  • 写好自动配置类,带上configuration 注解,条件注解,绑定配置文件注解
  • 写好属性绑定类,负责配置信息属性的绑定
  • 创建starter工程,引入自定义配置类模块
  • 在meta-inf/spring 文件夹中,创建auto configuration.imports文件,写入自动配置类全限定名
  • 将starter打包

为什么要定制starter

独立于业务的功能模块封装成starter,可以被各个项目复用。比如发送短信、解决微服务项目的数据库连接池配置问题,redis引入、鉴权组件等

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询