0

我的属性文件中有很多行/条目。行按类别分组以使文件更易于维护。我有两个具有相同值的键。我不想删除一个,因为它使我的文件更难维护。

#category1
var1=foo
....
#category2
var2=foo

有没有办法让 var1 指向 var2?我是这样想的:

    #category1
    var1=->var2 #point to var2
    ....
    #category2
    var2=foo
4

1 回答 1

0

java.util.Properties实现了Map接口,因此您可以使用该接口执行该接口提供的所有操作。要允许值表示对其他键的引用,您可以包装用于获取值的代码,以检查该值是否实际上是键,然后返回由该键映射的值。

所以你可以实现这样的事情:

String value1 = p.getProperty("var1");
while(p.containsKey(value1)) {
    value1 = p.getProperty(value1);
}

更好:添加前缀 -$例如 - 到 value 以标识引用,仅当存在时才解析:

String value1 = p.getProperty("var1");
while(value1.startsWith("$")) {
    value1 = p.getProperty(value1.substring(1));
}

包装检索代码的一个好方法是扩展Properties类并覆盖方法getProperty

因为org.springframework.context.support.ReloadableResourceBundleMessageSource您可以扩展它,覆盖您想要的任何方法并配置 spring 以注入您的类版本。

于 2013-09-21T23:26:57.270 回答