spring boot 配置推荐使用 kebab-case(如 connection-timeout),yaml 和 properties 文件均支持且为官方主流写法;java 配置类字段必须用 camelcase(如 connectiontimeout),依赖松散绑定自动映射;避免下划线或驼峰混用,前缀应体现业务语义与层级逻辑。

Spring Boot 的松散绑定机制让配置项命名很灵活,但规范写法能减少歧义、提升可维护性。关键不是“能不能用”,而是“怎么用才清晰、一致、少踩坑”。
配置文件中推荐用 kebab-case(短横线)
YAML 和 properties 文件都支持 kebab-case,且是官方文档和社区最主流的写法。它语义清晰、视觉分隔明确,尤其适合多单词配置项。
-
application.yml 中必须用 kebab-case:YAML 语法天然适配短横线,写成
connection-timeout比connectionTimeout更自然,也不会被误解析为嵌套结构 -
application.properties 中也优先用 kebab-case:虽然它也接受 camelCase(如
connectionTimeout),但混用容易导致团队风格不统一;统一用http.client.connection-timeout更易读、更符合 Spring Boot 官方示例惯例 - 常见例子:
server.port、spring.datasource.url、logging.level.com.example—— 全部采用小写字母 + 短横线
Java 配置类里必须用 camelCase
代码层面的字段命名严格遵循 Java 语言规范:变量和方法用小驼峰。Spring Boot 的松散绑定会自动把配置文件里的各种写法映射过去。
- 配置类字段写成
private int connectionTimeout;,而不是connection_timeout或connection-timeout - 哪怕你在 properties 里写
http.client.connection_timeout=5000或http.client.connectionTimeout=5000,Spring 都能正确绑定到connectionTimeout字段上 - 这是靠 Spring 的 Relaxed Binding 实现的:它会忽略大小写、短横线、下划线差异,统一转为驼峰形式匹配
避免在配置文件里用下划线或驼峰混搭
虽然 Spring 能识别 connection_timeout 和 connectionTimeout,但它们不是推荐写法,尤其在 YAML 中容易出问题。
-
connection_timeout在 YAML 里可能被误认为是两个独立 key(比如缩进没对齐时),不如connection-timeout稳定 -
connectionTimeout在 properties 中虽可用,但和 Java 字段名撞名,容易让人误以为“配置名必须和字段名完全一样”,其实不是——这反而掩盖了松散绑定的价值 - 团队协作中,统一用 kebab-case 可以杜绝 “这个配置到底该写成 timeout 还是 TimeOut” 的争论
配置前缀和层级要体现业务语义
命名不只是格式问题,更是设计意图的表达。前缀要反映模块职责,层级要符合逻辑分组。
- 别用泛泛的
app.timeout,而用payment.gateway.connect-timeout或notification.sms.send-timeout - 同一大类配置尽量保持层级一致,比如所有数据库相关都走
spring.datasource.xxx,所有 Redis 相关走spring.redis.xxx - 避免前缀过长(如
com.example.myproject.infrastructure.http.client.read-timeout),合理截断,靠包路径和注释补充上下文
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











