我的属性文件中有很多行/条目。行按类别分组以使文件更易于维护。我有两个具有相同值的键。我不想删除一个,因为它使我的文件更难维护。
#category1
var1=foo
....
#category2
var2=foo
有没有办法让 var1 指向 var2?我是这样想的:
#category1
var1=->var2 #point to var2
....
#category2
var2=foo
我的属性文件中有很多行/条目。行按类别分组以使文件更易于维护。我有两个具有相同值的键。我不想删除一个,因为它使我的文件更难维护。
#category1
var1=foo
....
#category2
var2=foo
有没有办法让 var1 指向 var2?我是这样想的:
#category1
var1=->var2 #point to var2
....
#category2
var2=foo
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 以注入您的类版本。