在spring引入属性文件
<bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!-- 这里支持多种寻址方式:classpath和file -->
<value>classpath:redis.properties</value>
<value>classpath:config.properties</value>
</list>
</property>
</bean>
<!-- 重写propertyConfigurer 主要是为了在java代码中获取属性 -->
<bean id="gloal" class="com.baojing.wx.config.Gloal">
<property name="location">
<value>classpath:gloal.properties</value>
</property>
</bean>
第一种方案直接在xml直接${key}就能获取到property中的值。
第二种的原理是集成继承
org.springframework.beans.factory.config.PropertyPlaceholderConfigurer类。
public class Gloal extends PropertyPlaceholderConfigurer{
private staticMap<String,String> propertyMap;
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException {
super.processProperties(beanFactoryToProcess, props);
propertyMap = new HashMap<String, String>();
for (Object key : props.keySet()) {
String keyStr = key.toString();
String value = props.getProperty(keyStr);
propertyMap.put(keyStr, value);
}
}
//static method for accessing contextproperties
public static String getProperty(String name) {
return propertyMap.get(name);
}
}
使用Gloal.getProPerty(Key)获取value