在Spring中,您可以使用注入Environment对象来读取所有环境属性
@Resource
private org.springframework.core.env.Environment environment;
所以问题是我可以以编程方式更改某些属性的值吗?
我看到的唯一解决方法是获取包含此属性的所有MutablePropertySource。从环境中完全删除此源并添加一个新的PropertySource,其中包含前一个属性+已更改的属性(或已删除的属性)。
然而,这看起来很丑陋而且会很慢;(
答案 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,并使用上面的代码对其进行了修改,则该位置的文件不会发生变化。所做的更改将仅在内存中。如果您的应用程序重新启动,则不会在该位置进行任何更改。