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());
    		}
    	}
    }
    
  • 相关阅读:
    关于feign调用请求头丢失分析
    并发下编写SQL的注意事项
    Sentinel降级规则整理
    Mybatis-Plus使用整理
    Docker各种零散命令整理
    set集合怎么保证不重复的
    idea启动项目ava heap space
    网络穿透工具--钉钉HTTP穿透
    Log4j基本使用
    ide中普通java程序打包
  • 原文地址:https://www.cnblogs.com/phil_jing/p/7355509.html
Copyright © 2011-2022 走看看