码迷,mamicode.com
首页 > 编程语言 > 详细

Java读取properties文件(非泛滥)

时间:2017-08-14 00:38:16      阅读:148      评论:0      收藏:0      [点我收藏+]

标签: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日
 *
 */
@Component
public class InitializingProperties implements InitializingBean {

	private static final Logger logger = Logger.getLogger(InitializingProperties.class);

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
	 */
	@Override
	public 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日
 *
 */
@Component
public class InitializingProperties implements InitializingBean {

	private static final Logger logger = Logger.getLogger(InitializingProperties.class);
	
	@Autowired
	private Properties propertyConfigurer;

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
	 */
	@Override
	public 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文件(非泛滥)

标签:word   try   nal   ide   path   public   set   system   解决   

原文地址:http://www.cnblogs.com/phil_jing/p/7355509.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!