如何更改/更新/删除Spring的ConfigurableEnvironment中的属性

时间:2014-09-25 08:21:06

标签: spring spring-mvc

在Spring中,您可以使用注入Environment对象来读取所有环境属性

@Resource
private org.springframework.core.env.Environment environment;

所以问题是我可以以编程方式更改某些属性的值吗?

我看到的唯一解决方法是获取包含此属性的所有MutablePropertySource。从环境中完全删除此源并添加一个新的PropertySource,其中包含前一个属性+已更改的属性(或已删除的属性)。

然而,这看起来很丑陋而且会很慢;(

2 个答案:

答案 0 :(得分:2)

// ConfigurableEnvironment env
MutablePropertySources propertySources = env.getPropertySources();
Map<String, Object> map = new HashMap<>();
map.put(myObject.getKey(),
            myObject.getQuery());
propertySources
            .addFirst(new MapPropertySource("newmap", map));

答案 1 :(得分:0)

请注意,@ user6631150的上述答案中的“ newmap”是要在其中更新/添加值的属性文件的名称。

这也不是不会更改磁盘上的属性文件,它只会更新内存中的属性文件。

含义:如果在C:/user/app_dir/newmap.properties中有一个属性文件newmap.properties,并使用上面的代码对其进行了修改,则该位置的文件不会发生变化。所做的更改将仅在内存中。如果您的应用程序重新启动,则不会在该位置进行任何更改。