是的,你的理解完全正确!在 Spring Boot 中:
YAML 配置文件中用短横线
-
分隔的属性名,默认会自动映射到 Java 类中 使用驼峰命名法(camelCase) 的字段。
这是 Spring Boot 默认内建的映射机制,不需要你额外配置。
✅ 举个实际例子:
application.yml
user:
user-name: Alice
user-age: 25
对应 Java 类字段:
@Component
@ConfigurationProperties(prefix = "user")
public class UserProperties {
private String userName;
private int userAge;
// setter & getter 必须有,或者使用 Lombok 的 @Data/@Getter/@Setter
}
Spring Boot 会自动把:
user-name
→userName
user-age
→userAge
进行映射绑定。
✅ 为什么能自动映射?
Spring Boot 使用的是 Binder
+ RelaxedNames
策略进行属性绑定,支持以下格式自动适配驼峰命名:
yml 或 properties 格式 | 映射到 Java 字段 |
---|---|
my-property-name | myPropertyName |
my_property_name | myPropertyName |
MY_PROPERTY_NAME | myPropertyName |
my.property.name (prop) | myPropertyName |
这使得你在配置文件中可以自由使用短横线风格(符合 yml 规范),而 Java 类中仍使用标准驼峰命名。
❗ 注意:
-
绑定是通过字段名匹配的,不是通过
@Value("${xxx}")
的参数名。 -
只有
@ConfigurationProperties
支持松散绑定(Relaxed Binding),
@Value
不支持自动驼峰转换,你得精确写路径,比如:@Value("${user.user-name}")
✅ 总结
配置项 | 说明 |
---|---|
yml 使用 - (短横线) | 推荐,用于分隔多个词 |
Java 使用驼峰命名 | 推荐,符合 Java 命名规范 |
Spring Boot 自动映射机制 | ✅ 会将短横线自动映射为驼峰字段 |
生效条件 | 通过 @ConfigurationProperties 注解绑定类 |