Spring中数字命名配置属性与@ConstructorBinding的兼容方案
解决Spring配置属性纯数字命名与Java/Kotlin变量命名冲突问题
在维护包含数百个Web服务的大型存量项目时,需为配置属性添加校验,采用@Validated、@ConstructorBinding和@ConfigurationProperties编写数据类时遇到以下问题:
- 存在如
dummy.941=http:...这类以纯数字命名的配置属性 - Java/Kotlin语法不允许变量名以数字开头,无法直接将类变量命名为
941 - 该配置属性库为多系统共用,无法修改属性名称
可行解决方案
使用Spring提供的@Name注解(全类路径:org.springframework.boot.context.properties.bind.Name),可将纯数字命名的配置属性与合法命名的类变量绑定,示例Kotlin代码如下:
@Valid @Name(value = "703") val s703: S703 = S703()
该方案可正常完成属性绑定,且配合@Valid等校验注解的功能不受影响,实际使用效果良好。
内容的提问来源于stack exchange,提问作者Jebb Süffel
相关产品推荐
相关产品推荐

