標籤:word try nal ide path public set system 解決
根據spring設定檔的 PropertiesFactoryBean和 PropertyPlaceholderConfigurer可以選擇不同的載入方式,我是使用System.setProperty(key, value),代碼中可以直接用System.getProperty(key)取value的值
一、PropertyPlaceholderConfigurer
PropertyPlaceholderConfigurer是解決 properties 檔案預留位置問題,實現 PropertiesLoaderSupport 類
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>classpath:jdbc.properties</value><value>classpath:redis.properties</value></list></property><!-- 忽略不可解析的 --><property name="ignoreUnresolvablePlaceholders" value="true" /></bean>
package com.phil.common.prop;import java.util.Map.Entry;import java.util.Properties;import org.apache.log4j.Logger;import org.springframework.beans.factory.InitializingBean;import org.springframework.stereotype.Component;/** * 載入Properties檔案 * @author phil * @date 2017年8月13日 * */@Componentpublic class InitializingProperties implements InitializingBean {private static final Logger logger = Logger.getLogger(InitializingProperties.class);/* * (non-Javadoc) * * @see * org.springframework.beans.factory.InitializingBean#afterPropertiesSet() */@Overridepublic void afterPropertiesSet() throws Exception {Properties props = new Properties();props.load(InitializingProperties.class.getClassLoader().getResourceAsStream("test1properties"));props.load(InitializingProperties.class.getClassLoader().getResourceAsStream("test2.properties"));for (Entry<Object, Object> e : props.entrySet()) {System.setProperty(e.getKey().toString(), e.getValue().toString());logger.info(e.getKey().toString() + "---" + e.getValue().toString());}}}
二、PropertiesFactoryBean
PropertiesFactoryBean 是PropertiesLoaderSupport 直接的實作類別
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertiesFactoryBean"><property name="location"><value>classpath:portal_dev.properties</value></property></bean>
package com.phil.common.prop;import java.util.Map.Entry;import java.util.Properties;import org.apache.log4j.Logger;import org.springframework.beans.factory.InitializingBean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;/** * 載入Properties檔案 * @author phil * @date 2017年8月13日 * */@Componentpublic class InitializingProperties implements InitializingBean {private static final Logger logger = Logger.getLogger(InitializingProperties.class);@Autowiredprivate Properties propertyConfigurer;/* * (non-Javadoc) * * @see * org.springframework.beans.factory.InitializingBean#afterPropertiesSet() */@Overridepublic void afterPropertiesSet() throws Exception {for (Entry<Object, Object> e : propertyConfigurer.entrySet()) {System.setProperty(e.getKey().toString(), e.getValue().toString());logger.info(e.getKey().toString() + "---" + e.getValue().toString());}}}
Java讀取properties檔案(非泛濫)