【发布时间】:2015-10-28 08:21:30
【问题描述】:
在加载 JBOSS 应用程序服务器时,我需要覆盖属性文件中给出的属性值。
我尝试使用以下代码覆盖 PropertyPlaceholderConfigurer 中的 processProperties() 方法。
我的属性文件有这个条目
base.url="defaultUrl"
public class CustomPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
protected String convertPropertyValue(String originalValue) {
return (originalValue != null) ? originalValue.trim() : originalValue;
}
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props)
throws BeansException {
super.processProperties(beanFactory, props);
for (Enumeration names = props.propertyNames(); names.hasMoreElements();) {
String key = (String) names.nextElement();
props.put("base.url", getUpdatedUrl());
}
}
}
我在应用程序上下文中的占位符 ${base.url} 中注入 base.url 值。
我应该如何在运行时更新给定属性的值。上面的代码总是取属性文件中的值而不是更新的值。
【问题讨论】:
-
你把你的类注册为bean了吗? (如果你调试你的代码,sn-p 执行了吗?)
-
是的,它正在执行并设置值,但我将基本 url 作为属性文件中的一个。
-
参考this
标签: spring spring-2.5