【发布时间】:2014-04-16 08:55:41
【问题描述】:
我有下面的弹簧配置来使用来自 java Classess 的文件中的访问属性。 JavaEE项目有多种方式,如下:
<context:component-scan base-package="com.service.pack" />
<context:property-placeholder properties-ref="appProperties"/>
我可以在 java SE 项目中使用上述方法,因此尝试了 PropertyPlaceholderConfigurer 类,但此时从 PropertyPlaceholderConfigurer 类中看不到 applicationProperties bean,因此 propertiesMap 为空。
我做错了什么?有没有一种简单的方法可以从类文件(如 javaee 项目)中获取属性
<bean id="applicationProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:app.properties"/>
</bean>
@Component
public class PropertiesUtil extends PropertyPlaceholderConfigurer {
private static Map<String, String> propertiesMap;
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactory,
Properties props) throws BeansException {
super.processProperties(beanFactory, props);
propertiesMap = new HashMap<String, String>();
for (Object key : props.keySet()) {
String keyStr = key.toString();
propertiesMap.put(keyStr, parseStringValue(props.getProperty(keyStr),
props, new HashSet()));
}
}
public static String getProperty(String name) {
return (String) propertiesMap.get(name);
}
}
【问题讨论】:
-
为什么在 Jave SE 项目中会有所不同...没有区别...
-
调用processProperties(方法时,Properties props 参数为空。为什么?
标签: java spring properties