参考:http://www.cnblogs.com/hafiz/p/5876243.html
有两种方式:
首先
看配置:
config.properties和config1.properties
util代码:
package util;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; public class ConfigLoadUtil { private Logger logger = LoggerFactory.getLogger(ConfigLoadUtil.class); private static final Properties properties = new Properties(); private String fileName; private ConfigLoadUtil(String fileName) { this.fileName = fileName; load(); } /** * 加载配置文件 */ private void load() { if (null != properties) { InputStream in = null; try { in = new ClassPathResource(fileName).getInputStream(); if (null == in) { /* 从文件路径获取配置文件 */ logger.debug("classpath not found filename!!"); in = new FileInputStream(fileName); properties.load(in); } else { properties.load(in); } logger.info("load config file success!"); } catch (FileNotFoundException e) { logger.error("file not found!", e); } catch (IOException e) { logger.error("load config file error!", e); } finally { if (null != in) { try { in.close(); } catch (IOException e) { logger.error("read config file error:", e); } } } } } public static String getValue(String key) { new ConfigLoadUtil("config1.properties"); String value = null; if (null != properties) { value = properties.getProperty(key); } return value; } public static void main(String[] args) { new ConfigLoadUtil("config1.properties"); System.out.println(ConfigLoadUtil.getValue("toIcrmServerPort")); } }
test:
package auth.util;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public abstract class Test { public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( new String[] { "applicationContext.xml" }); context.start(); System.out.println(ConfigUtil.getSql("myname")); } }
配置文件config:
myname=yxy
配置文件config1:
yourname=lhf
spring配置:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations"> <list> <value>classpath:config.properties</value> </list> </property> </bean> <context:property-placeholder location="classpath:config1.properties" ignore-unresolvable="true" /> <bean id="configUtil" class="auth.util.ConfigUtil"> <constructor-arg name="fileName" value="config1.properties" /> </bean>
如果配置了构造函数,那么util的getValue就不要new了
第二种方法是继承类
public class CustomizedPropertyConfigurer extends PropertyPlaceholderConfigurer {
private static Map<String, Object> ctxPropertiesMap; @Override protected void processProperties(ConfigurableListableBeanFactory beanFactory,Properties props)throws BeansException { super.processProperties(beanFactory, props); ctxPropertiesMap = new HashMap<String, Object>(); for (Object key : props.keySet()) { String keyStr = key.toString(); String value = props.getProperty(keyStr); ctxPropertiesMap.put(keyStr, value); } } public static Object getContextProperty(String name) { return ctxPropertiesMap.get(name); } }
调用方法:
ip=(String) CustomizedPropertyConfigurer.getContextProperty("ip");
===