是否可以使用 Spring 和 @Value 注释将 YAML 属性 读入 Map

Is it possible to read YAML property into Map using Spring and @Value annotation

我希望能够做到的是:

YAML:

features:
    feature1: true
    feature2: false
    feature3: true

代码:

@Value("${features}")
private Map<String,Boolean> features;

我不知道要使用什么 Spring 脚本语法来执行此操作(如果可能的话)

我正在使用 Spring 像这样启动和访问自定义变量:

  1. 创建映射到您的自定义属性的自定义 class:

    @Component
    @ConfigurationProperties(prefix="features")
    public class ConstantProperties {
        private String feature1;
    
        public String getFeature1(){
            return feature1;
        }
        public void setFeature1(String feature1) {
            this.feature1 = feature1;
        }
    }
    
  2. YAML 文件将如下所示:

    features:
      feature1: true
      feature2: false
      feature3: true
    
  3. 在你的class中表示你想访问这些属性,你可以使用以下方法:

    @Autowire 
    private ConfigurationProperties configurationProperties;
    
  4. 然后在 class 中访问,使用以下语法:

    configurationProperties.getFeature1();
    
  5. 或者您可以参考自定义 属性,例如:

    "{{features.feature1}}"