You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot @ConfigurationProperties属性绑定Getter命名问题求助

问题解析:@ConfigurationProperties绑定中Getter命名影响注入的原因

核心逻辑是Spring Boot的配置绑定严格遵循JavaBean规范,属性名由Getter/Setter的命名推导,而非字段本身的名称。

两种情况的具体分析

  1. Getter为getDescription()时能正常注入
    按照JavaBean的属性推导规则:去掉get前缀,将剩余部分的首字母小写,得到属性名description。
    Spring会把配置文件中sample.description这个key,和推导出来的description属性做匹配,同时寻找对应的Setter方法(setDescription())。只要你的类中存在这个Setter(不管字段实际叫descrip_tion还是其他),就能完成值的注入,所以descrip_tion字段能拿到配置值。

  2. Getter改为getDescrip_tion()时出现绑定错误
    此时JavaBean规则推导的属性名变成了descrip_tion。
    Spring会尝试匹配配置中对应的sample.descrip_tion,但你的配置是sample.description,两者不匹配。更关键的是,Spring会寻找对应descrip_tion属性的Setter方法(setDescrip_tion()),如果你的类里没有这个Setter(原来的Setter可能还是setDescription()),就会抛出“找不到setter”的绑定错误。

额外补充与解决方案

  • Spring Boot支持配置key的下划线/短横线与JavaBean驼峰属性的自动转换:比如配置sample.descrip_tion会自动映射到JavaBean的descripTion属性(对应GettergetDescripTion()、SettersetDescripTion()),建议遵循这种规范命名,避免字段名带下划线。
  • 如果非要保留带下划线的字段名,可以在字段上添加@JsonProperty("description")注解,显式指定绑定的配置key,这样不管Getter/Setter的命名是什么,都会绑定sample.description。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 03:05:04