Spring 嵌套类中的ConfigurationProperties
以下是ymlSpring 嵌套类中的ConfigurationProperties,spring,spring-boot,Spring,Spring Boot,以下是yml app: a: prop: aaa b: prop: bbb @组件 公共抽象类公共{ @值(“${prop}”) 私人弦道具; @配置属性(prefix=“app.a”) @PropertySource(“类路径:app.yml”) @组成部分 公共静态类A扩展了公共{ } @配置属性(前缀=“app.b”) @PropertySource(“类路径:app.yml”) @组成部分 公共静态类B扩展了公共{ } } 但是对于a或b,这两个类具有相同的值
app:
a:
prop: aaa
b:
prop: bbb
@组件
公共抽象类公共{
@值(“${prop}”)
私人弦道具;
@配置属性(prefix=“app.a”)
@PropertySource(“类路径:app.yml”)
@组成部分
公共静态类A扩展了公共{
}
@配置属性(前缀=“app.b”)
@PropertySource(“类路径:app.yml”)
@组成部分
公共静态类B扩展了公共{
}
}
但是对于a
或b
,这两个类具有相同的值
如何解决此问题?您可以使用配置参数列表:
app:
props:
- key: a
value: aaa
- key: b
value: bbb
并在单独的bean中以更复杂的方式检索您的价值:
@ConfigurationProperties(prefix = "app")
public class CommonConfiguration {
List<Prop> props;
//Getters and setters
public Prop retreiveSpecificConfiguration(String className) {
//some kind of logic here
}
public static class Prop {
private String key, value;
//Getters and setters
}
}
我发现了问题。简单地说 我还是想相信我错了 我将
.yml
文件更改为properties
,并尝试使用该文件
@PropertySource(“classpath:/vendor.properties”)
@EnableConfigurationProperties
公共抽象类公共{
@值(“${prop}”)
私人弦道具;
@配置属性(prefix=“app.a”)
@组成部分
公共静态类A扩展了公共{
}
@配置属性(前缀=“app.b”)
@组成部分
公共静态类B扩展了公共{
}
}
它成功了。如果你把A和B带到顶级水平,它有效吗?@jannis Nope。将这些内部类移动到外部级别没有任何帮助。
@Autowired
CommonConfiguration config;