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;
}
}
但它有两个缺点:
-
它返回下的属性
prop2
但我需要所有的财产
道具0
. 正如我所说,我不知道将要提前使用的物业名称。
-
它仍然使用Spring格式来解析第三方库无法接受的列表
yaml
格式。