Spring源码学习-PropertyPlaceholderHelper
转载:http://my.oschina.net/ydsakyclguozi/blog/465526
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());
      //用属性文件键值属性props替换字符串stringValue
			      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);
	  }
}
Spring源码学习-PropertyPlaceholderHelper的更多相关文章
- spring源码学习之路---深入AOP(终)
		作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 上一章和各位一起看了一下sp ... 
- spring源码学习之路---IOC初探(二)
		作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 上一章当中我没有提及具体的搭 ... 
- Spring源码学习
		Spring源码学习--ClassPathXmlApplicationContext(一) spring源码学习--FileSystemXmlApplicationContext(二) spring源 ... 
- Spring源码学习-容器BeanFactory(四) BeanDefinition的创建-自定义标签的解析.md
		写在前面 上文Spring源码学习-容器BeanFactory(三) BeanDefinition的创建-解析Spring的默认标签对Spring默认标签的解析做了详解,在xml元素的解析中,Spri ... 
- Spring源码学习-容器BeanFactory(三) BeanDefinition的创建-解析Spring的默认标签
		写在前面 上文Spring源码学习-容器BeanFactory(二) BeanDefinition的创建-解析前BeanDefinition的前置操作中Spring对XML解析后创建了对应的Docum ... 
- Spring源码学习-容器BeanFactory(二) BeanDefinition的创建-解析前BeanDefinition的前置操作
		写在前面 上文 Spring源码学习-容器BeanFactory(一) BeanDefinition的创建-解析资源文件主要讲Spring容器创建时通过XmlBeanDefinitionReader读 ... 
- Spring源码学习-容器BeanFactory(一) BeanDefinition的创建-解析资源文件
		写在前面 从大四实习至今已一年有余,作为一个程序员,一直没有用心去记录自己工作中遇到的问题,甚是惭愧,打算从今日起开始养成写博客的习惯.作为一名java开发人员,Spring是永远绕不过的话题,它的设 ... 
- 【目录】Spring 源码学习
		[目录]Spring 源码学习 jwfy 关注 2018.01.31 19:57* 字数 896 阅读 152评论 0喜欢 9 用来记录自己学习spring源码的一些心得和体会以及相关功能的实现原理, ... 
- Spring 源码学习——Aop
		Spring 源码学习--Aop 什么是 AOP 以下是百度百科的解释:AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程通过预编译的方式和运行期动态代理实 ... 
随机推荐
- implement Google's Open Source Slam "Cartographer" demos in ROS/rviz
			Cartographer is a backpack equipped with Simultaneous Localization and Mapping (SLAM) technology. 1. ... 
- Windows Internals学习笔记(一)概念与工具
			参考资料: 1. <Windows Internals> 2. Windows Drive Kit 3. Microsoft Windows SDK 4. WDK下载地址 知识点: 1. ... 
- Redis基础知识之————使用技巧(持续更新中.....)
			一.key 设计技巧 把表名转换为key前缀 如, tag: 第2段放置用于区分区key的字段--对应mysql中的主键的列名,如userid 第3段放置主键值,如2,3,4...., a , b , ... 
- oracle学习之bulk collect用法
			通过bulk collect减少loop处理的开销,使用Bulk Collect提高Oracle查询效率 Oracle8i中首次引入了Bulk Collect特性,该特性可以让我们在PL/SQL中能使 ... 
- iOS进阶收藏
			XCode自带重构方式http://www.cocoachina.com/ios/20160127/15097.html iOS迭代多语言开发http://www.cocoachina.com/ios ... 
- [转载] linux 程序运行过程中替换文件
			今天被朋友问及“Linux下可以替换运行中的程序么?”,以前依稀记得Linux下是可以的(而Windows就不让),于是随口答道“OK”.结果朋友发来一个执行结果:(test正在运行中)# cp te ... 
- (三)uboot源码分析
			一.九鼎官方uboot和三星原版uboot对比(1)以九鼎官方的uboot为蓝本来学习的,以三星官方的这份为对照.(2)不同版本的uboot或者同一版本不同人移植的uboot,可能目录结构和文件内容都 ... 
- 【Todo】Python面试题分析记录(修饰器等)
			首先,看这一段代码: class A(object): x = 1 gen = (lambda t: (t for _ in xrange(10)))(x) if __name__ == '__mai ... 
- Maven项目的发布,发布到Nexus
			原文:http://blog.csdn.net/mexican_jacky/article/details/50277505 第一步: 配置信息如下: <!-- 发布项目的配置 --> ... 
- 搭建一个简单的Struts2框架
			1 创建一个web项目. 2 导入必要的JAR文件. 放在WEB-INF下lib包里. 3 添加web.xml配置,添加启动配置. <?xml version="1.0" ... 
