目的:读取项目里redis配置文件
具体代码如下:
package com.eastcom_sw.inas.common.rest; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; /** * 读取配置文件工具 * * @author Huangst2016 * @version v1.0 * @create 2017年11月14日 13:28 **/ public class ReadResourceConfigUtils { public static void main(String[] args) { new ReadResourceConfigUtils().getRedisConfig(); } public void getRedisConfig(){ Properties prop = new Properties(); try { prop.load(this.getClass().getResourceAsStream("/redis/redis.properties")); String host=prop.getProperty("redis.host"); String port=prop.getProperty("redis.port"); String pass=prop.getProperty("redis.pass"); String dbIndex=prop.getProperty("redis.dbIndex"); System.out.println("host="+host); System.out.println("port="+port); System.out.println("pass="+pass); System.out.println("dbIndex="+dbIndex); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }############上面是读取单个配置文件,以下是整个项目启动时会初始化读取你指定的配置文件所有配置信息############
核心是用spring的PropertyPlaceholderConfigurer 首先如果是spring3.0以上版本,在applicationContext.xml中beans下配置 <!--因为要在程序中获取spring初始扫描得到的配置信息,所以使用自定义configurer,因而不能使用placeholer标签--> <bean id="propertyConfigurer" class="com.xxx.xxx.utils.PropertyConfigurerUtil"> <property name="locations"> <list> <value>classpath:/config/config-dev.properties</value> </list> </property> </bean> com.xxx.xxx.utils.PropertyConfigurerUtil是自定义的一个工具类,继承至PropertyPlaceholderConfigurer 如下: package com.xxx.xxx.utils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
* 自定义PropertyPlaceholderConfigurer返回properties内容
*/
public class PropertyConfigurerUtil extends PropertyPlaceholderConfigurer {
private static Map<String, Object> ctxPropertiesMap;
@Override
protected void processProperties(
ConfigurableListableBeanFactory beanFactoryToProcess,
Properties props) throws BeansException {
super.processProperties(beanFactoryToProcess, props);
ctxPropertiesMap = new HashMap<String, Object>();
for (Object key : props.keySet()) {
String keyStr = key.toString();
String value = props.getProperty(keyStr);
ctxPropertiesMap.put(keyStr, value);
}
}
/**
* 获取properties中指定key的值
* @param name
* @return
*/
public static Object getContextProperty(String name) {
return ctxPropertiesMap.get(name);
}
}
使用示例(读取配置文件中ip属性):
String ip= PropertyConfigurerUtil.getContextProperty("ip");