• 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());
    		}
    	}
    }
    
  • 相关阅读:
    java swing学习
    JCheckBox相关知识点
    【python 第五日】 函数闭包与装饰器
    【python第四日】 文件处理 生成器 迭代器
    【Python3 第三日】%和format格式化输出 函数
    【python第二日】运算符 数据类型(数字 字符串 列表 元组 字典 集合) 重新定义比较大小
    怎么设置博客园样式
    【python】第一日 python2和python3区别 命名方式 三种结构
    mybatis-generator.xml
    SpringBoot集成mybatis和mybatis generator
  • 原文地址:https://www.cnblogs.com/phil_jing/p/7355509.html
Copyright © 2020-2023  润新知