文档章节

spring加载properties属性文件到内存

凯文加内特
 凯文加内特
发布于 2015/06/11 13:49
字数 228
阅读 2469
收藏 3

1. CustomPropertyConfigurer.java

package propertyconfig;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Map.Entry;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.util.PropertyPlaceholderHelper;

public class CustomPropertyConfigurer extends PropertyPlaceholderConfigurer{
	private static Map<String,String> properties = new HashMap<String,String>();
	protected void processProperties(
			ConfigurableListableBeanFactory beanFactoryToProcess,
			Properties props) throws BeansException {
		// cache the properties
		PropertyPlaceholderHelper helper = new PropertyPlaceholderHelper(
				DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, false);
		for(Entry<Object,Object> entry:props.entrySet()){
			String stringKey = String.valueOf(entry.getKey());
			String stringValue = String.valueOf(entry.getValue());
			stringValue = helper.replacePlaceholders(stringValue, props);
			properties.put(stringKey, stringValue);
		}
		super.processProperties(beanFactoryToProcess, props);
	}
	
	public static Map<String, String> getProperties() {
		return properties;
	}
	
	public static String getProperty(String key){
		return properties.get(key);
	}
}

 2. applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
    xmlns:aop="http://www.springframework.org/schema/aop"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
    http://www.springframework.org/schema/aop  
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"  
    default-lazy-init="true" default-autowire="byName" default-init-method="" default-destroy-method="">  
    
    <bean id="propertyConfigurer"  class="propertyconfig.CustomPropertyConfigurer">  
        <property name="locations">  
            <list>  
                <value>classpath:propertyconfig/project.properties</value>  
            </list>  
        </property>  
    </bean>  
    
</beans>

 3. project.properties

site=iteye
blog=antlove
url=${site}/${blog}

4. Main.java测试类

package propertyconfig;
import java.util.Map;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
	public static void main(String[] args) {
		new ClassPathXmlApplicationContext("propertyconfig/applicationContext.xml");
		
		Map<String,String> properties = CustomPropertyConfigurer.getProperties();
		
		System.out.println(properties);
	}
}


本文转载自:http://antlove.iteye.com/blog/2070861

共有 人打赏支持
凯文加内特
粉丝 337
博文 674
码字总数 96570
作品 0
青岛
后端工程师
私信 提问
intellij idea中spring boot properties文件不能自动提示问题解决

idea和sts里面都有对spring boot中properties文件的提示功能,而且可以通过点击属性可以进入到*Properties.java这类文件中。 需要说明的是,idea社区版好像不具备这个功能,还有旗舰版也需要...

李不言
08/21
0
0
微服务 SpringBoot 2.0(二):配置文件解析

properties我用了好多年,你却让我用yml,这是什么鬼 —— Java面试必修 引言 上一篇介绍了Spring Boot的轻松入门项目构建,对Spring Boot的特性有了初步了解。但如果要想玩得很熟练的话就请...

阿郎_
09/23
0
0
Spring Boot 配置加载顺序详解

使用 Spring Boot 会涉及到各种各样的配置,如开发、测试、线上就至少 3 套配置信息了。Spring Boot 可以轻松的帮助我们使用相同的代码就能使开发、测试、线上环境使用不同的配置。 在 Spri...

Java技术栈
08/27
0
0
Spring Boot核心配置

启动类 在包根目录下添加启动类,必须包含main方法,再添加Spring Boot启动方法: 或者流式API 下面是一个典型的Spring Boot工程包布局,Application启动类位于根目录下 核心注解 启动类上面...

Java技术栈
06/10
0
0
Spring Boot 核心配置文件 bootstrap & application 详解。

用过 Spring Boot 的都知道在 Spring Boot 中有以下两种配置文件 bootstrap (.yml 或者 .properties) application (.yml 或者 .properties) 为什么会有这两种配置文件呢?大家都清楚它们的区...

Java技术栈
07/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《稻盛和夫经营学》读后感心得体会3180字范文

《稻盛和夫经营学》读后感心得体会3180字范文: 一代日本经营之圣稻盛和夫凭借刻苦勤奋的精神以及深植于佛教的商业道德准则,成为了“佛系”企业家的代表人物。在《稻盛和夫经营学》“领导人...

原创小博客
38分钟前
1
0
java框架学习日志-5(常见的依赖注入)

依赖注入(dependency injection) 之前提到控制反转(Inversion of Control)也叫依赖注入,它们其实是一个东西,只是看的角度不同,这章详细说一下依赖注入。 依赖——指bean对象创建依赖于...

白话
54分钟前
2
0
红外接收器驱动开发

背景:使用系统的红外遥控软件没有反应,然后以为自己接线错误,反复测试,结果烧坏了一个红外接收器,信号主板没有问题。所以自己开发了一个红外接收器的python驱动。接线参见https://my.os...

mbzhong
今天
2
0
ActiveMQ消息传送机制以及ACK机制详解

AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。 一. ActiveMQ消息传送机...

watermelon11
今天
2
0
HashTable和Vector为什么逐渐被废弃

HashTable,不允许键值为null,还一个就是put方法使用sychronized方法进行线程同步,单线程无需同步,多线程可用concurren包的类型。 如编程思想里面说的作为工具类,封闭性做的不好没有一个...

noob_chr
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部