spring boot starter 必须命名为 xxx-spring-boot-starter,是纯 maven 模块,仅负责依赖传递与自动配置;需依赖 spring-boot-autoconfigure,通过 @conditionalonclass、@conditionalonproperty 等控制配置加载,并在 meta-inf/spring/org.springframework.boot.autoconfigure.autoconfiguration.imports 中注册自动配置类。

理解 Starter 的核心结构与命名规范
Spring Boot 官方要求 Starter 必须遵循 xxx-spring-boot-starter 的命名格式(如 mybatis-spring-boot-starter),且不能包含 spring-boot-starter- 前缀(那是 Spring 官方维护的)。Starter 本身应是一个纯 Maven 模块,不写业务逻辑,只负责依赖传递 + 自动配置加载。
创建 starter 模块并声明正确依赖
新建一个 Maven 模块(如 demo-feature-spring-boot-starter),在 pom.xml 中:
- 依赖
spring-boot-autoconfigure和spring-boot-starter(提供基础自动装配能力) - 使用
<scope>provided</scope>引入你封装的「核心功能模块」(如demo-feature-core),避免重复打包 - 不要直接依赖 Spring Boot Web、Data 等 starter —— 由使用者按需引入
编写自动配置类并启用条件化加载
在 src/main/java 下新建配置类(如 DemoFeatureAutoConfiguration),用 @Configuration 和 @ConditionalOnClass / @ConditionalOnMissingBean 控制生效时机:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 用
@ConditionalOnClass(SomeService.class)确保仅当用户项目含相关类时才加载 - 用
@ConditionalOnProperty(prefix = "demo.feature", name = "enabled", havingValue = "true", matchIfMissing = true)支持开关控制 - 配置类中通过
@Bean注册组件,并标注@ConditionalOnMissingBean避免与用户自定义 Bean 冲突
注册自动配置并确保资源可见
在 src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports(Spring Boot 2.7+ 推荐路径)中,逐行写入你的自动配置类全限定名:
⚠️ 注意:不要用旧版 spring.factories(已废弃),除非兼容 Spring Boot 2.6 及更早版本;若需多版本支持,可同时保留两者,但优先走 AutoConfiguration.imports。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










