Kotlin DSL 构建 Spring Boot Starter
相关概念:kotlin、spring-boot
用 Kotlin DSL 写 Spring Boot Starter,真正要抓住的不是语法,而是 Starter 自身的最小组成结构。
最小骨架
一个最基础的 Starter,通常就这几部分:
spring.factories或等价自动装配入口AutoConfiguration@ConfigurationProperties- 业务 Bean
它们之间的关系可以理解成:
- 自动装配入口把配置类暴露给 Spring
- 配置类读取配置属性
- 配置类再把业务 Bean 组装出来
实现路径
1. 定义配置属性类
@ConfigurationProperties(prefix = "simple.alarm.email")
data class EmailProperties(
var host: String? = null,
var senderEmail: String? = null,
var senderPassword: String? = null,
var receiverEmail: String? = null,
)这里用 var 和默认值,不是形式问题,而是为了让 Spring 的配置绑定顺利工作。
2. 写业务 Bean
业务 Bean 本身保持简单,把依赖通过构造器吃进来。
3. 写自动配置类
自动配置类负责把 Properties 和业务 Bean 接起来。
4. 暴露自动装配入口
没有这一步,Starter 就只是一个普通 jar,不会被 Spring 自动发现。
Kotlin DSL 真正带来的变化
和 Groovy 版比起来,变化主要在构建脚本层:
- 文件后缀变成
.kts - 类型提示更强
- DSL 更靠近 Kotlin 本身的语法习惯
但 Starter 的设计原则本身并没有变。
提醒
写 Starter 时比“能跑”更重要的是边界清楚:
- 什么配置开放给使用者
- 哪些 Bean 应该自动创建
- 什么条件下才装配
Starter 一旦边界模糊,后面维护会比普通业务代码更痛苦。