一、自定义 Starter 的核心原理
Spring Boot Starter 的本质是自动配置(AutoConfiguration) ,通过约定优于配置的原则,自动加载相关 Bean、配置类等,减少手动配置。其核心依赖于:
- @Conditional 注解:根据条件(如类是否存在、配置是否生效)决定是否加载 Bean。
- spring.factories 文件:指定自动配置类的全路径,让 Spring Boot 启动时扫描并加载。
- Starter 模块:通常包含自动配置类、依赖管理、默认配置等。
二.关键注解说明
| 注解 | 作用 |
|---|---|
@Configuration | 标识为配置类 |
@EnableConfigurationProperties | 启用配置属性类(绑定@ConfigurationProperties) |
@ConditionalOnClass | 当类路径中存在指定类时生效 |
@ConditionalOnMissingClass | 当类路径中不存在指定类时生效 |
@ConditionalOnBean | 当容器中存在指定 Bean 时生效 |
@ConditionalOnMissingBean | 当容器中不存在指定 Bean 时生效(允许用户覆盖) |
@ConditionalOnProperty | 根据配置项的值决定是否生效 |
三.注意事项
- 版本兼容:Starter 的 Spring Boot 版本需与使用项目兼容,避免依赖冲突。
- 可扩展性:通过
@ConditionalOnMissingBean允许用户自定义 Bean 覆盖默认实现。 - 配置提示:添加
spring-boot-configuration-processor依赖,提升开发体验。 - 避免过度封装:Starter 应聚焦单一功能,避免集成过多无关依赖。