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

工作良好。

有没有办法绑定不区分大小写的值?像 ABCAbcAbCabc 一样,任何模式都应该起作用。

注意:我看到了这个问题-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

回到顶部