d params)替换属性文件中的占位符

qyyhg6bp  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(391)

我想在我的属性文件中有一个动态占位符
my application.properties文件

属性

property.first=${some-value} (placeholder in property file )

我想用通过vm参数传递的值替换上面的占位符(${some value}), -Dsome-value=12 .
实际上,我可以通过springboot中的@value注解来实现,但是我使用的是带有xml配置的spring4。在applicationcontext.xml文件中添加任何xml配置有什么解决方案吗(我不想更改java代码)

fivyi3re

fivyi3re1#

读取properties对象中的.properties文件,然后用通过vm参数传递的值替换占位符:

public static boolean replaceVariables(Properties properties) {
        boolean changed = false;
        for (Entry<Object, Object> entry : properties.entrySet()) {
            if (entry.getValue() instanceof String) {
                String value = (String) entry.getValue();
                value = value.trim();
                if (value.startsWith("${") && value.endsWith("}")) {
                    value = System.getProperty(value.substring(2, value.length() - 1));
                    if (value == null)
                        entry.setValue("");
                    else
                        entry.setValue(value);
                    changed = true;
                }
            }
        }
        return changed;
    }

相关问题