zoukankan      html  css  js  c++  java
  • Java基于Spring配置读取properties文件

    根据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("test1.properties"));		
    		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());
    		}
    	}
    }
    
  • 相关阅读:
    7-3.自定义列表
    GoLang 使用协程与管道随机生成姓名
    [Unity3D] 点击物品显示物品信息
    [Unity3D] 碰撞物体添加到背包
    [PS] DDS文件导入插件
    [Unity3D] 给角色添加武器
    [Unity3D] 刚体 碰撞器 触发器
    [Unity3D] 物体的几种移动方法
    [Unity3D] 解决导入的模型出现闪烁的问题
    [Unity3D] 人物角色跳跃(动画跳跃&刚体跳跃)
  • 原文地址:https://www.cnblogs.com/phil_jing/p/7355509.html
Copyright © 2011-2022 走看看