Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在运行时Spring3MVC上设置系统属性_Java_Spring_Spring Mvc_Ssl - Fatal编程技术网

Java 如何在运行时Spring3MVC上设置系统属性

Java 如何在运行时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定义来设置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>
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;