自定义 Starter 的核心是围绕 Spring Boot 自动装配机制实现开箱即用,需规范命名(带-spring-boot-starter 后缀)、分层结构(autoconfigure + starter 模块)、必备三要素(配置属性类、自动配置类、spring.factories 文件),依赖精简准确,测试发布闭环。

自定义 Starter 的核心是让组件“开箱即用”——引入依赖后自动装配、支持配置、按需生效。它不是写个工具类打包就行,而是围绕 Spring Boot 的自动装配机制来组织代码。
命名与项目结构要规范
项目名必须带 -spring-boot-starter 后缀(如 pay-spring-boot-starter),这是 Spring Boot 识别和扫描的约定。建议拆成两个模块:
- xxx-spring-boot-autoconfigure:放自动配置逻辑、属性类、条件装配等核心代码
- xxx-spring-boot-starter:仅作依赖聚合,pom 中引入 autoconfigure 模块 + starter-parent
这样分层清晰,便于单独升级配置逻辑,也符合 Spring 官方 starter 的组织方式。
关键三要素缺一不可
一个能跑起来的 Starter 必须包含以下三个部分:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
配置属性类:用
@ConfigurationProperties(prefix = "xxx")绑定 yml/properties 配置,记得设合理默认值 -
自动配置类:加
@Configuration和条件注解(如@ConditionalOnClass、@ConditionalOnMissingBean),内部用@Bean声明要注入的组件 -
spring.factories 文件:放在
META-INF/下,声明启用的自动配置类:org.springframework.boot.autoconfigure.EnableAutoConfiguration=\<br> com.example.starter.XxxAutoConfiguration
依赖和注解要精简准确
pom.xml 中只保留真正需要的依赖:
- 必须引入
spring-boot-autoconfigure(提供@Conditional等核心注解) - 如果要用配置提示(如 IDEA 自动补全 yml 属性),加上
spring-boot-configuration-processor(optional=true) - 业务依赖(如 Redis、HTTP 客户端等)按实际需要引入,避免污染使用者项目
不要直接依赖 spring-boot-starter 全家桶——它会把 web、logging 等无关模块带进来,违背 starter 的轻量原则。
测试和发布要闭环
开发完先本地验证:
- 在 starter 模块执行
mvn install推到本地 Maven 仓库 - 新建一个空 Spring Boot 项目,引入你的 starter 依赖
- 写几行配置(如
xxx.enabled=true),启动看是否自动注入 Bean、是否读取到配置值
确认无误后再发布到公司私服或 Maven Central,其他项目就能像用官方 starter 一样直接引入使用了。

















