gpt4 book ai didi

java - 如何使用 applicationContext.xml 中设置的一些默认值从 Spring 中的 JVM 选项访问属性值?

转载 作者:搜寻专家 更新时间:2023-11-01 02:49:42 26 4
gpt4 key购买 nike

我想在 Spring 的 applicationContext.xml 中访问从 JVM 传递的一些属性值。根据 Spring 的表达式语言功能,我知道实现此目的的一种方法是通过 #{systemProperties.myProperty} 获取一些 -DmyProperty=xyz

但我有兴趣为我通过 JVM 分配的每个此类属性设置默认值,以防用户未通过服务器的 JVM 选项设置值。我怎样才能在 Spring 的任何上下文 xml 文件中实现这一点?请帮忙。

最佳答案

您可以创建一个 bean,它从具有默认值的上下文中获取 map 参数并初始化系统属性

<bean class="test.B1">
<constructor-arg>
<map>
<entry key="p1" value="v1" />
<entry key="p2" value="v2" />
....
</map>
</constructor-arg>
</bean>

.

public B1(Map<String, String> defaultProperties) {
for (Map.Entry<String, String> e : defaultProperties.entrySet()) {
if (System.getProperty(e.getKey()) == null) {
System.setProperty(e.getKey()
, e.getValue());
}
}
}

上下文中的 B1 定义应该在使用 #{systemProperties.myProperty} 的任何 bean 之前,以便首先初始化属性

更新

那是关于覆盖系统属性。但是如果你只需要像这里一样覆盖 Spring 占位符

<bean class="test.B1">
<property name="prop1" value="${xxx}" />
</bean>

将属性占位符的本地覆盖属性设置为“true”就足够了

<context:property-placeholder location="classpath:/app.properties" local-override="true" />

关于java - 如何使用 applicationContext.xml 中设置的一些默认值从 Spring 中的 JVM 选项访问属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com