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


问题内容

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

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

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

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

但是,这看起来很丑,而且会很慢;(


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