Java 如何在运行时Spring3MVC上设置系统属性
目前,我们有下面的bean定义来设置javax.net.ssl.trustStoreJava 如何在运行时Spring3MVC上设置系统属性,java,spring,spring-mvc,ssl,Java,Spring,Spring Mvc,Ssl,目前,我们有下面的bean定义来设置javax.net.ssl.trustStore <bean id="trustStore" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetObject" value="#{@systemProperties}" /> <property name="targetMe
<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>
System.setProperty(“javax.net.ssl.trustStorePassword”、“changeit”)代码>
不过,我在这个实现中遇到的问题是,当对“cacerts”文件进行更改时,除非重新启动应用程序,否则这种更改不会反映出来。我想知道是否有一种方法可以动态地做到这一点
我们有一个功能可以改变“cacerts”
我试着研究这个链接,但我很难理解其中的逻辑
附言:春天我还是新手
干杯 为属性创建自定义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();
}
}
作为完整属性对象的@Autowire
:
@Autowired
@Qualifier("sysConfig")
private java.util.Properties systemProperties;
你好,jw23。谢谢你的回复。我在想,我怎么能在我的代码中使用这个呢?比如说,在我的@Controller类上?我能直接说吗??:System.setProperty(“javax.net.ssl.trustStore”,“./new_path/cacerts”);或者,您的意思是,一旦调用System.setProperty,这样的属性值在运行时就会发生更改?请解释一下。干杯!:)不,它们在启动时进行评估。这是否意味着不可能在运行时对此进行更改?我在创业公司工作。我需要在运行时也这样做。每次您想使用时,都可以从系统属性
中读取该值。您好jw23。您能为这种实现发布一个链接或代码片段吗?如果你能,我将非常感激。干杯!:)
<bean id="sysConfig" class="xxx.SysConfigPropertiesFactoryBean"/>
<bean class="...">
<property name="targetObject" value="#{sysConfig.property}" />
</bean>
@Value("#{sysConfig.propertyName}")
private String propertyValue;
@Autowired
@Qualifier("sysConfig")
private java.util.Properties systemProperties;