我的财产具有以下结构:
my {
property {
item {
"1" {
value="some value"
}
"2" {
value="another value"
}
}
}
}
如何使用@Value
批注引用名为“ 1”的属性?
我的示例不起作用。我尝试了以下选项:
@Bean(name = "myProperty")
public String myProperty(@Value("${my.property.item.\"1\".value}") String myProperty) {
return myProperty;
}
@Bean(name = "myProperty")
public String myProperty(@Value("${my.property.item.'1'.value}") String myProperty) {
return myProperty;
}
@Bean(name = "myProperty")
public String myProperty(@Value("${my.property.item.1.value}") String myProperty) {
return myProperty;
}
没有一项工作。
任何建议表示赞赏!
答案 0 :(得分:1)
解决此问题的最佳方法是仅重命名属性,因为java不喜欢名称中包含引号。
答案 1 :(得分:0)
好的,所以Java绝对不喜欢名称中的引号,因此我的解决方案(以我的情况为准)是使用别名来引用属性,尽管我意识到这在我给出的小示例中并不明显(我不想太复杂了。
在我的示例中,有一组属性文件被导入到Spring application.conf
文件中。
在此application.conf
文件中,我放置了以下属性:
myProperty.value=true
这将覆盖其他属性
然后在我的原始属性文件中直接引用它。
my {
property {
item {
"1" {
value=${myProperty.value}
}
}
}
}
这意味着当我将属性绑定到*Config.java
文件中时,我可以这样做:
@Bean(name = "myProperty")
public String myProperty(@Value("${myProperty.value}") String myProperty)
{
return myProperty;
}
希望这对人们有帮助。