Spring Boot将@Value绑定到枚举不区分大小写
public enum Property { A,
AB,
ABC;
}
@Value("${custom.property}")protected Property property;
(小写)
custom.property=abc
运行应用程序时出现错误:
无法将[java.lang.String]类型的值转换为所需的[com.xxx.Property]类型:找不到匹配的编辑器或转换策略。
而(大写):
custom.property=ABC
工作良好。
有没有办法绑定不区分大小写的值?像 ABC , Abc , AbC , abc 一样,任何模式都应该起作用。
注意:我看到了这个问题-Spring 3.0
MVC绑定枚举区分大小写,但就我而言,我有10个以上的枚举/值(并希望有更多)类,并且要实现10个不同的自定义属性绑定器会很痛苦,我需要一些通用的解决方案。
回答:
@Value
和@ConfigurationProperties
功能不匹配。我无法承受足够的压力@ConfigurationProperties
。
首先,您可以在一个简单的POJO中设计您的配置,该POJO可以注入到您想要的任何位置(而不是在批注中包含易于被拼写错误打断的表达式)。其次,元数据支持意味着您可以
非常轻松地 在IDE中为自己的密钥自动完成。
最后,文档中描述的宽松绑定仅适用于@ConfigurationProperties
。@Value
是Spring
Framework的功能,并且没有意识到宽松的绑定。我们打算在文档中更清楚地说明这一点。
TL; DR abc
可以使用,@ConfigurationProperties
但不能使用@Value
。
以上是 Spring Boot将@Value绑定到枚举不区分大小写 的全部内容, 来源链接: utcz.com/qa/434514.html