当前位置:首页 > 开发 > 互联网 > 正文

编码方式获取Spring中PropertyPlaceholderConfigurer的属性

发表于: 2013-03-01   作者:antlove   来源:转载   浏览次数:
摘要: applicationContext.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http:/
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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location">
			<value>name.properties</value>
		</property>
	</bean>
	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location">
			<value>birthday.properties</value>
		</property>
	</bean>
</beans>

birthday.properties属性文件
birthday=2012-12-12

name.properties属性文件
name=kid

SpringPropertyResourceReader.java
package utils;
import java.lang.reflect.Method;
import java.util.Properties;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.PropertyResourceConfigurer;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.support.PropertiesLoaderSupport;
public class SpringPropertyResourceReader {
	private static ApplicationContext applicationContext=new 
	ClassPathXmlApplicationContext("applicationContext.xml");
	private static AbstractApplicationContext abstractContext =
	(AbstractApplicationContext) applicationContext;
	private static Properties properties=new Properties();
	static{
		try{
			// get the names of BeanFactoryPostProcessor
			String[] postProcessorNames = abstractContext
					.getBeanNamesForType(BeanFactoryPostProcessor.class,true,true);
			
			for (String ppName : postProcessorNames) {
				// get the specified BeanFactoryPostProcessor
				BeanFactoryPostProcessor beanProcessor=
				abstractContext.getBean(ppName, BeanFactoryPostProcessor.class);
				// check whether the beanFactoryPostProcessor is 
				// instance of the PropertyResourceConfigurer
				// if it is yes then do the process otherwise continue
				if(beanProcessor instanceof PropertyResourceConfigurer){
					PropertyResourceConfigurer propertyResourceConfigurer=
							(PropertyResourceConfigurer) beanProcessor;
					
					// get the method mergeProperties 
					// in class PropertiesLoaderSupport
					Method mergeProperties=PropertiesLoaderSupport.class.
						getDeclaredMethod("mergeProperties");
					// get the props
					mergeProperties.setAccessible(true);
					Properties props=(Properties) mergeProperties.
					invoke(propertyResourceConfigurer);
					
					// get the method convertProperties 
					// in class PropertyResourceConfigurer
					Method convertProperties=PropertyResourceConfigurer.class.
					getDeclaredMethod("convertProperties", Properties.class);
					// convert properties
					convertProperties.setAccessible(true);
					convertProperties.invoke(propertyResourceConfigurer, props);
					
					properties.putAll(props);
				}
			}
			
		}catch(Exception e){
			throw new RuntimeException(e);
		}
	}
	
	public static String getProperty(String propertyName){
		return properties.getProperty(propertyName);
	}
}

测试代码Main.java
package main;

import utils.SpringPropertyResourceReader;
public class Main {
	public static void main(String[] args) throws Exception {
		System.out.println(SpringPropertyResourceReader.getProperty("name"));
		System.out.println(SpringPropertyResourceReader.getProperty("birthday"));
	}
}

编码方式获取Spring中PropertyPlaceholderConfigurer的属性

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/
在写C#代码时,发现VS提供没有直接提供gb2312的中文编码, 所以,需要找到对应编码名称的codepage来
Spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务
Spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务
Spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务
Spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务
Spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务
列表记录如下: 在SharePoint2010客户端模型如果要得到中文字段的 错误写法 //打开站点 ClientConte
一、属性在页面及源码中的表示方式 认真地看看页面中声明控件的代码,你会发现控件属性在页面中的表
 概念:   代码段是将预先定义好的可重用代码块快速插入到代码文件中,代码段提高了开发效率,增
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号