说我有以下两个配置文件:
文件1:
key1 = ${common.key1}
key2 = ${common.key2}
文件2:
common.key1 = value1
common.key2 = value2
我有以下代码:
import org.apache.commons.configuration.PropertiesConfiguration;
...
PropertiesConfiguration newConfig = new PropertiesConfiguration();
File configFile1 = new File("...paht to file 1");
File configFile2 = new File("...path to file 2");
newConfig.setDelimiterParsingDisabled(true);
newConfig.load(configFile2);
newConfig.load(configFile1);
Iterator<String> props = newConfig.getKeys();
while (props.hasNext()) {
String propName = props.next();
String propValue = newConfig.getProperty(propName).toString();
System.out.println(propName + " = " + propValue);
}
我有以下输出:
common.key1 = value1
common.key2 = value2
key1 = ${common.key1}
key2 = ${common.key2}
为什么不解析占位符?
答案 0 :(得分:0)
请参阅说明文件中的this page,
以下是与变量插值有关的更多信息,用户应注意:
...
所有属性访问方法均完成变量插值。 一个例外是通用的
getProperty()
方法,该方法返回原始属性值。
这就是您在代码中使用的内容。
API docs of getProperty()
也提到了这一点:
从配置中获取属性。 ... 在此级别上,尚未执行变量替换。
使用PropertiesConfiguration
中可用的其他方法来获取实际的内插值。例如,在getProperties()
上调用PropertiesConfiguration
,将其转换为java.util.Properties
对象,然后对其进行迭代。