@Value属性名称中的转义符“(双引号)

时间:2019-08-21 14:08:01

标签: java spring

我的财产具有以下结构:

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;
}

没有一项工作。

任何建议表示赞赏!

2 个答案:

答案 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;
}

希望这对人们有帮助。