【问题标题】:Is it possible to read YAML property into Map using Spring and @Value annotation是否可以使用 Spring 和 @Value 注释将 YAML 属性读入 Map
【发布时间】:2018-03-16 09:29:28
【问题描述】:
我想做的是:
YAML:
features:
feature1: true
feature2: false
feature3: true
代码:
@Value("${features}")
private Map<String,Boolean> features;
我不知道使用什么 Spring 脚本语法来执行此操作(如果可能的话)
【问题讨论】:
标签:
java
spring
yaml
spring-el
【解决方案1】:
我正在使用 Spring Boot 并像这样访问自定义变量:
-
创建一个映射到您的自定义属性的自定义类:
@Component
@ConfigurationProperties(prefix="features")
public class ConstantProperties {
private String feature1;
public String getFeature1(){
return feature1;
}
public void setFeature1(String feature1) {
this.feature1 = feature1;
}
}
-
YAML 文件将如下所示:
features:
feature1: true
feature2: false
feature3: true
-
在您想要访问这些属性的类中,您可以使用以下内容:
@Autowire
private ConfigurationProperties configurationProperties;
-
然后要访问该类,请使用以下语法:
configurationProperties.getFeature1();
-
或者您可以引用自定义属性,例如:
"{{features.feature1}}"