gpt4 book ai didi

java - 如何在运行时 Spring 3 MVC 上设置系统属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:41 26 4
gpt4 key购买 nike

目前我们有下面的 bean 定义来设置 javax.net.ssl.trustStore

<bean id="trustStore" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" value="#{@systemProperties}" />
<property name="targetMethod" value="putAll" />
<property name="arguments">
<props>
<prop key="javax.net.ssl.trustStore">../path_to/cacerts</prop>
<prop key="javax.net.ssl.trustStorePassword">changeit</prop>
</props>
</property>
</bean>

是否可以在运行时设置 javax.net.ssl.trustStore?
我知道有这样的东西:

System.setProperty("javax.net.ssl.trustStore", "D:/cacerts"); 

System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

我在这个实现中遇到的问题是,当对“cacerts”文件进行更改时,除非重新启动应用程序,否则此类更改不会反射(reflect)出来。我想知道是否有办法动态执行此操作。

我们有一个改变'cacerts'的功能。

我已尝试查看此链接,但我很难理解其中的逻辑。

http://java.dzone.com/articles/dynamic-property-management

PS:我还是春新。

干杯!

最佳答案

为属性创建自定义 FactoryBean:

public class SysConfigPropertiesFactoryBean implements FactoryBean<Properties> {

public final boolean isSingleton() {
return true;
}

public Class<Properties> getObjectType() {
return Properties.class;
}

public final Properties getObject() {
// filtering or any other operation here
return System.getProperties();
}

}

定义一个属性 bean:

<bean id="sysConfig" class="xxx.SysConfigPropertiesFactoryBean"/>

你可以使用它:

在 xml 中:

<bean class="...">
<property name="targetObject" value="#{sysConfig.property}" />
</bean>

使用单一值:

 @Value("#{sysConfig.propertyName}")
private String propertyValue;

作为 @Autowire 用于完整的 Properties 对象:

 @Autowired
@Qualifier("sysConfig")
private java.util.Properties systemProperties;

关于java - 如何在运行时 Spring 3 MVC 上设置系统属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22010793/

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