目前我们有下面的 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”文件进行更改时,除非重新启动应用程序,否则此类更改不会反映出来。我想知道是否有办法动态地执行此操作。
我们有一个可以更改“cacerts”的功能。
我尝试过查看此链接,但我很难理解其中的逻辑。
http://java.dzone.com/articles/dynamic-property-management http://java.dzone.com/articles/dynamic-property-management
PS:我还是春天的新人。
Cheers!
创建自定义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"/>
你可以使用它:
in xml:
<bean class="...">
<property name="targetObject" value="#{sysConfig.property}" />
</bean>
使用单一值:
@Value("#{sysConfig.propertyName}")
private String propertyValue;
as @Autowire
对于完整的 Properties 对象:
@Autowired
@Qualifier("sysConfig")
private java.util.Properties systemProperties;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)