SpringBoot Starter 机制
TIP
Starter 是 SpringBoot 的依赖聚合机制,将相关依赖和自动配置打包在一起,实现开箱即用。
命名规范
官方 Starter:spring-boot-starter-{模块}
示例:spring-boot-starter-web
spring-boot-starter-data-redis
第三方 Starter:{模块}-spring-boot-starter
示例:mybatis-spring-boot-starter
redisson-spring-boot-starterStarter 原理
每个 Starter 包含:
- 依赖的 JAR 包
- 自动配置类(AutoConfiguration)
- spring.factories 配置
my-starter
├── pom.xml
└── src/main
└── resources
└── META-INF
└── spring.factories自定义 Starter
java
// 1. 自动配置类
@Configuration
@ConditionalOnClass(MailService.class)
@EnableConfigurationProperties(MailProperties.class)
public class MailAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public MailService mailService(MailProperties properties) {
return new MailServiceImpl(properties);
}
}
// 2. 配置属性类
@ConfigurationProperties(prefix = "mail")
public class MailProperties {
private String host = "smtp.example.com";
private int port = 25;
private String username;
private String password;
// getter / setter
}
// 3. spring.factories
// org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
// com.example.mail.MailAutoConfiguration使用自定义 Starter
yaml
# 引入依赖后只需配置:
mail:
host: smtp.qq.com
port: 587
username: user@qq.com
password: xxx控制 Starter 加载顺序
java
@AutoConfigureBefore(DataSourceAutoConfiguration.class)
@AutoConfigureAfter(JdbcTemplateAutoConfiguration.class)
public class MyAutoConfiguration { }TIP
Starter 机制实现了关注点分离,每个 Starter 只负责一个领域功能,使用者按需引入即可。