代码之家  ›  专栏  ›  技术社区  ›  Oleksandr

如何在springboot2.3中检索yaml配置文件的一部分?

  •  0
  • Oleksandr  · 技术社区  · 5 年前

    application.yaml 配置文件,其中包含我事先不知道的属性。例如:

    prop0:
      prop1: 1234
      prop2:
        prop3: "Hello"
        prop4: [foo, bar, foo, bar, foo, bar]
        prop5: 
          - val1
          - val2
          - val3
    
    prop6:
      prop7: 123
      prop8: 321
    

    prop0 在yaml格式中:

    prop1: 1234
    prop2:
      prop3: "Hello"
      prop4: [foo, bar, foo, bar, foo, bar]
      prop5: 
        - val1
        - val2
        - val3
    

    我需要以字符串、InputStream或Map对象的形式检索它,其中每个值都表示基元类型、Map和array。或列表,即。

    Map<String, Object> prop0Value = ...;
    String prop3Value = prop0Value.get("prop2").get("prop3");
    List<String> prop5Value = prop0Value.get("prop2").get("prop5");
    

    prop0.prop2.prop5[0]=foo
    prop0.prop2.prop5[1]=bar
    prop0.prop2.prop5[2]=foo
    ...
    

    但是这种格式不是正确的yaml格式,大多数工具都无法解析。

    更新 我在考虑用 @ConfigurationProperties 用于解析属性的注释。比如:

    @Configuration
    @ConfigurationProperties(prefix = "prop0")
    public class MyConfigProperties {
    
        private Map<String, String> prop2;
    
        public Map<String, String> getProp2() {
            return prop2;
        }
    
        public void setProp2(Map<String, String> prop2) {
            this.prop2 = prop2;
        }
    }
    

    但它有两个缺点:

    1. 它返回下的属性 prop2 但我需要所有的财产 道具0 . 正如我所说,我不知道将要提前使用的物业名称。
    2. 它仍然使用Spring格式来解析第三方库无法接受的列表 yaml 格式。
    0 回复  |  直到 5 年前