我真的很喜欢Spring的@ ConfigurationProperties-功能,可以通过YAML将配置属性加载到Java类中。
通常,我会以某种方式使用它,即拥有以下yaml文件:
lst: typ: A: "FLT" B: "123" C: "345" D: "TTS"
类型属性将被映射到Java Map。现在我想有一个在yaml文件本身中引用yaml片段的解决方案,以便可以重用对该片段的引用:
lst: ${typs} typs: A: "FLT" B: "123" C: "345" D: "TTS"
Spring和@ConfigurationProperties有可能吗?
我相信 只能将占位符与字符串属性一起使用 。这给您两个选择:
如果您单击上面的链接,将提供完整的说明。我会引导您完成。
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;