编程语言
首页 > 编程语言> > 如何在简单的Java程序中替换spring属性占位符

如何在简单的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