博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取Spring中PropertyPlaceholderConfigurer的属性
阅读量:6813 次
发布时间:2019-06-26

本文共 3772 字,大约阅读时间需要 12 分钟。

hot3.png

博客分类: 

·       

 

applicationContext.xml配置文件 

Xml代码  

1.   <?xml version="1.0" encoding="UTF-8"?>  

2.   <beans xmlns="http://www.springframework.org/schema/beans"  

3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

4.          xsi:schemaLocation="http://www.springframework.org/schema/beans  

5.              http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  

6.       <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  

7.           <property name="location">  

8.               <value>name.properties</value>  

9.           </property>  

10.      </bean>  

11.      <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  

12.          <property name="location">  

13.              <value>birthday.properties</value>  

14.          </property>  

15.      </bean>  

16.  </beans>  

birthday.properties属性文件 

Properties代码  

1.   birthday=2012-12-12  

name.properties属性文件 

Properties代码  

1.   name=kid  

SpringPropertyResourceReader.java 

Java代码  

1.   package utils;  

2.   import java.lang.reflect.Method;  

3.   import java.util.Properties;  

4.   import org.springframework.beans.factory.config.BeanFactoryPostProcessor;  

5.   import org.springframework.beans.factory.config.PropertyResourceConfigurer;  

6.   import org.springframework.context.ApplicationContext;  

7.   import org.springframework.context.support.AbstractApplicationContext;  

8.   import org.springframework.context.support.ClassPathXmlApplicationContext;  

9.   import org.springframework.core.io.support.PropertiesLoaderSupport;  

10.  public class SpringPropertyResourceReader {  

11.      private static ApplicationContext applicationContext=new   

12.      ClassPathXmlApplicationContext("applicationContext.xml");  

13.      private static AbstractApplicationContext abstractContext =  

14.      (AbstractApplicationContext) applicationContext;  

15.      private static Properties properties=new Properties();  

16.      static{  

17.          try{  

18.              // get the names of BeanFactoryPostProcessor  

19.              String[] postProcessorNames = abstractContext  

20.                      .getBeanNamesForType(BeanFactoryPostProcessor.class,true,true);  

21.                

22.              for (String ppName : postProcessorNames) {  

23.                  // get the specified BeanFactoryPostProcessor  

24.                  BeanFactoryPostProcessor beanProcessor=  

25.                  abstractContext.getBean(ppName, BeanFactoryPostProcessor.class);  

26.                  // check whether the beanFactoryPostProcessor is   

27.                  // instance of the PropertyResourceConfigurer  

28.                  // if it is yes then do the process otherwise continue  

29.                  if(beanProcessor instanceof PropertyResourceConfigurer){  

30.                      PropertyResourceConfigurer propertyResourceConfigurer=  

31.                              (PropertyResourceConfigurer) beanProcessor;  

32.                        

33.                      // get the method mergeProperties   

34.                      // in class PropertiesLoaderSupport  

35.                      Method mergeProperties=PropertiesLoaderSupport.class.  

36.                          getDeclaredMethod("mergeProperties");  

37.                      // get the props  

38.                      mergeProperties.setAccessible(true);  

39.                      Properties props=(Properties) mergeProperties.  

40.                      invoke(propertyResourceConfigurer);  

41.                        

42.                      // get the method convertProperties   

43.                      // in class PropertyResourceConfigurer  

44.                      Method convertProperties=PropertyResourceConfigurer.class.  

45.                      getDeclaredMethod("convertProperties", Properties.class);  

46.                      // convert properties  

47.                      convertProperties.setAccessible(true);  

48.                      convertProperties.invoke(propertyResourceConfigurer, props);  

49.                        

50.                      properties.putAll(props);  

51.                  }  

52.              }  

53.                

54.          }catch(Exception e){  

55.              throw new RuntimeException(e);  

56.          }  

57.      }  

58.        

59.      public static String getProperty(String propertyName){  

60.          return properties.getProperty(propertyName);  

61.      }  

62.  }  

测试代码Main.java 

Java代码  

1.   package main;  

2.     

3.   import utils.SpringPropertyResourceReader;  

4.   public class Main {  

5.       public static void main(String[] args) throws Exception {  

6.           System.out.println(SpringPropertyResourceReader.getProperty("name"));  

7.           System.out.println(SpringPropertyResourceReader.getProperty("birthday"));  

8.       }  

9.   }  

 

转载于:https://my.oschina.net/lsl1991/blog/806608

你可能感兴趣的文章
当主库发生宕机,从库如何接管主库
查看>>
卷影副本(Shadow Copies)
查看>>
重新回归
查看>>
AngularJs 知识
查看>>
Spring.NET的AOP怎么玩
查看>>
Linux双机热备解决方案之Heartbeat
查看>>
angerfire宋杨的桌面秀
查看>>
用JQuery给图片添加鼠标移入移出事件
查看>>
ALTER TABLE & ALTER TYPES
查看>>
Hadoop-调优剖析
查看>>
Mac前端抓包小工具Charles4.0下载
查看>>
用AHP层次分析法挑选最佳结婚对象
查看>>
Subversion安装手记
查看>>
Linux 获取设备树源文件(DTS)里描述的资源【转】
查看>>
Effective C++ 阅读笔记(二)public继承与继承中的函数覆盖
查看>>
什么是UV?
查看>>
Stringbuffer与Stringbuilder源码学习和对比
查看>>
Centos 学习大纲
查看>>
常见的JavaScript易错知识点整理
查看>>
RagingWire战略重点批发数据中心服务
查看>>