如何创建一个springboot starter
·
创建一个 Spring Boot Starter 的本质是:
把“可复用的自动配置 + 依赖 + Bean装配”封装成一个 Maven 组件,让别的项目“引入即用”
下面给你一套标准工程化做法(面试+实战通用)。
⭐ 1. Starter 本质结构
一个标准 starter 通常拆成两个模块:
my-spring-boot-starter → 依赖聚合(不写代码)
my-spring-boot-autoconfigure → 核心自动配置逻辑
⭐ 2. 项目结构
my-starter-parent
├── my-spring-boot-starter
└── my-spring-boot-autoconfigure
⭐ 3. 第一步:创建 autoconfigure 模块(核心)
✔ 3.1 引入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
</dependencies>
✔ 3.2 写一个自动配置类
比如:自定义一个“日志组件”
@Configuration
@EnableConfigurationProperties(MyLogProperties.class)
public class MyLogAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public MyLogService myLogService(MyLogProperties properties) {
return new MyLogService(properties.getPrefix());
}
}
✔ 3.3 配置属性类
@ConfigurationProperties(prefix = "my.log")
public class MyLogProperties {
private String prefix = "DEFAULT";
public String getPrefix() {
return prefix;
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
}
⭐ 4. 第二步:注册自动配置(关键)
Spring Boot 3.x 用:
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
✔ 写入内容:
com.example.autoconfig.MyLogAutoConfiguration
👉 作用:
Spring Boot 启动时自动扫描并加载
⭐ 5. 第三步:创建 starter 模块(纯依赖)
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>my-spring-boot-autoconfigure</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
👉 这个模块:
不写代码,只做依赖传递
⭐ 6. 使用方式(像 Spring 官方一样)
✔ 引入 starter
<dependency>
<groupId>com.example</groupId>
<artifactId>my-spring-boot-starter</artifactId>
</dependency>
✔ application.yml
my:
log:
prefix: DEV
✔ 直接使用
@Autowired
private MyLogService myLogService;
⭐ 7. Spring Boot Starter 的核心机制
核心是三件事:
✔ 1)自动配置
Spring Boot
✔ 2)条件装配
@ConditionalOnMissingBean
@ConditionalOnClass
@ConditionalOnProperty
✔ 3)SPI加载机制
AutoConfiguration.imports
⭐ 8. Starter 的设计原则(面试加分)
✔ 1. 无侵入
- 不影响业务代码
✔ 2. 默认可用
- 引入即生效
✔ 3. 可配置
- properties可覆盖
✔ 4. 可替换
- 用户可自定义 Bean
⭐ 9. 常见 Starter 示例
Spring 官方:
- spring-boot-starter-web
- spring-boot-starter-data-redis
企业常见:
- log starter
- mq starter
- auth starter
- oss starter
- sms starter
⭐ 10. 面试标准回答
如果面试官问:
如何自定义 Spring Boot Starter?
可以这样答:
✔ 标准答案
Spring Boot Starter 通常由两个模块组成:starter 和 autoconfigure。核心逻辑在 autoconfigure 模块中,通过 @Configuration 配置类结合 @ConditionalOnClass、@ConditionalOnProperty 等条件注解实现自动装配,并通过 spring.factories 或 Spring Boot 3 的 AutoConfiguration.imports 文件进行自动配置注册。starter 模块只负责依赖传递,使得业务项目引入后无需额外配置即可使用相关功能,从而实现“开箱即用”的能力。
⭐ 11. 一句话总结
Spring Boot Starter 本质是“自动配置 + 条件装配 + SPI注册 + 依赖封装”的工程化封装机制。
更多推荐


所有评论(0)