我非常喜欢Spring的@ ConfigurationProperties功能,可以通过YAML将配置属性加载到Java类中。
通常我会以某种方式使用它,我有以下yaml文件:
lst:
typ:
A: "FLT"
B: "123"
C: "345"
D: "TTS"
type-attribute将映射到Java-Map。现在我希望有一个解决方案来引用yaml文件本身中的yaml-fragments,这样我就可以重用对该片段的引用:
lst: ${typs}
typs:
A: "FLT"
B: "123"
C: "345"
D: "TTS"
Spring和@ConfigurationProperties可以实现吗?
答案 0 :(得分:2)
我认为只能使用带字符串属性的占位符。 这为您提供了两个选项:
如果您点击上面的链接,则会提供整个说明。我会引导你完成它。
prop1: A:FLT, B:123, C...
prop2: ${prop1}
@Component("PropertySplitter")
public class PropertySplitter {
public Map<String, String> map(String property) {
return this.map(property, ",");
}
private Map<String, String> map(String property, String splitter) {
return Splitter.on(splitter).omitEmptyStrings().trimResults().withKeyValueSeparator(":").split(property);
}
}
@Value("#{PropertySplitter.map('${prop1}')}")
Map<String, String> prop1;
@Value("#{PropertySplitter.map('${prop2}')}")
Map<String, String> prop2;