如何在简单的Java程序中替换spring属性占位符
作者:互联网
我正在使用Java和Spring Boot应用程序.我有一个属性文件,需要在运行时将其添加为docker映像的环境变量.当通过占位符使用某些属性时,它们会通过现有环境进行过滤,如下所示.
app.name=MyApp
app.description=${app.name} is a Spring Boot application
我正在编写一个样本Java文件来读取此属性文件,并创建具有一些过滤属性的地图对象.在此过程中,如何用实际属性值替换占位符?
我试图寻找一个密钥,并使用getProperty方法进行替换.但我想避免查找硬编码的属性键名称,以避免维护困难.
提前致谢.
解决方法:
我将创建一个新的Properties后裔,并使用一种获取属性值的方法,并替换所有引用(如果有).
像这样:
class MyProperties extends Properties
{
// Constructors, as needed
private Pettern p = Pattern.compile("\\$\\{([^}]+)\\}");
public String getString(final String key)
{
final String value = getProperty(key);
if (null == value)
return null;
final StringBuffer result = new StringBuffer();
final Matcher m = p.matcher(value);
while (m.find())
{
final String refKey = m.group(1);
final String refValue = getProperty(refKey);
m.appendReplacement(result, null == refValue ? refKey : refValue);
}
m.appendTail(result);
return result.toString();
}
}
标签:properties-file,java 来源: https://codeday.me/bug/20191025/1929515.html