如何引用java.util.Properties中的另一个属性?

yli*_*yli 52 java properties

Java属性文件可以引用其他属性文件吗?

## define a default directory for Input files  
dir.default=/home/data/in/

dir.proj1=${dir.default}p1
dir.proj2=${dir.default}p2
dir.proj3=${dir.default}p3
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Osc*_*Ryz 51

这就是你想要的,它有点旧,但可能适合你的需要.

在属性值中启用常量替换

您可以在属性值的任何位置替换常量,甚至在值中包含多个常量,如下例所示:

CONST_1 = shoes and ships
CONST_2 = sealing wax
SomeValue = {CONST_1} and {CONST_2} 
Run Code Online (Sandbox Code Playgroud)

在此示例中,"SomeValue"属性评估为"鞋子和船舶以及密封蜡".

  • @ianaz请注意在链接中您必须使用子类XProperties而不是Properties.这可能就是你什么也看不见的原因. (2认同)

小智 12

Eproperties是一个开源项目 ,提供变量替换以及一些其他功能 - 尽管替换可能是最有用的.它是java.util.Properties的子类,可以被任何其他可以将配置信息作为属性的类使用.


Nig*_*olf 7

Commons Config lib也可以这样做.http://commons.apache.org/configuration/userguide/overview.html#Using_Configuration

但是,正如已经指出的那样,看看EProperties库; http://code.google.com/p/eproperties/

它支持许多简洁的功能(如替换,嵌套,列表),包括包含,扩展Java属性,并且比Commons Config(它还允许您使用include语法包含属性)更轻一些.


Tom*_*ine 6

标准属性文件只是键值对.在文本格式中,Properties只需将键与值分开,并执行一些简单的操作,例如允许转义字符.您可以使用详细的XML语法定义实体.

如果您需要自己的替换语法,则可以像处理任何其他字符串一样操作返回的值.或者,您可以编写自己的版本Properties或在生成文件时执行替换.


hig*_*ted 5

java.util.Properties类不会为您执行此操作.子类化属性,覆盖load()方法并自己进行替换并不太难.