当前位置:首页 > 开发 > 开源软件 > 正文

关于系统中使用多个PropertyPlaceholderConfigurer的配置及PropertyOverrideConfigurer

发表于: 2013-01-04   作者:daizj   来源:转载   浏览:
摘要: 1、PropertyPlaceholderConfigurer Spring中PropertyPlaceholderConfigurer这个类,它是用来解析Java Properties属性文件值,并提供在spring配置期间替换使用属性值。接下来让我们逐渐的深入其配置。 基本的使用方法是:(1) <bean id="propertyConfigurerForWZ&q
1、PropertyPlaceholderConfigurer
Spring中PropertyPlaceholderConfigurer这个类,它是用来解析Java Properties属性文件值,并提供在spring配置期间替换使用属性值。接下来让我们逐渐的深入其配置。

基本的使用方法是:(1)

<bean id="propertyConfigurerForWZ" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>classpath:/spring/properties/jdbc.properties</value>
    </property>
</bean>

其中classpath是引用src目录下的文件写法。

当存在多个Properties文件时,配置就需使用locations了:(2)

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
       <list>
          <value>classpath:/spring/properties/jdbc.properties</value>
          <value>/WEB-INF/conf/spring/system.properties</value>
        </list>
    </property>
</bean>

接下来我们要使用多个PropertyPlaceholderConfigurer来分散配置,达到整合多工程下的多个分散的Properties文件,其配置如下:(3)

<bean id="propertyConfigurerForProject1" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="order" value="1" />
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="location">
       <value>classpath:/spring/include/dbQuery.properties</value>
    </property>
</bean>

<bean id="propertyConfigurerForProject2" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="order" value="2" />
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="locations">
      <list>
         <value>classpath:/spring/properties/jdbc.properties</value>
         <value>/WEB-INF/conf/spring/system.properties</value>
      </list>
    </property>
</bean>

其中order属性代表其加载顺序,而ignoreUnresolvablePlaceholders为是否忽略不可解析的Placeholder,如配置了多个PropertyPlaceholderConfigurer,则需设置为true

2、PropertyOverrideConfigurer
与PropertyPlaceholderConfigurer 不同的是: PropertyOverrideConfigurer 利用属性文
件的相关信息,覆盖XML 配置文件中定义。即PropertyOverrideConfigurer 允许XML 配
置文件中有默认的配置信息。
如果PropertyOverrideConfigurer 的属性文件有对应配置信息,则XML 文件中的配
置信息被覆盖:否则,直接使用XML 文件中的配置信息。使用PropertyOverrideConfigurer
属性文件的格式如下:
beanName.property=value
beanName 是属性占位符企图覆盖的bean 名, property 是企图覆盖的属性名。看如
下配置文件:
<?xml version="1.0" encoding="gb2312"?>
<'一指定Spring 配置文件的dtd>
<lDOCTYPE beans PUBL工C "-//SPR工NG//DTD BEAN//EN"
''http://www.springframework.org/dtd/spring-beans.dtd''>
<!… Spring 配置文件的根元素>
<beans>
<' 配置一个属性占位符beanoApplictionContext能自动识别PropertyPlaceholderConfigurer bean -->
<bean id="propertyOverrider"
class= "org.springframework.beans.factory.config.PropertyOverrideConfigurer">
<property name="locations">
<list>
<value>dbconn.properties</value>
<!-如果有多个属性文件,依次在下面列出来一〉
</list>
</property>
</bean>
<'…配置本地的DBCP 数据源一〉
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManager
DataSource" destroy-method="close">
<property name="driverClassName" value="dd"/>
<property name="url" value="xx"/>
<property name="username" value="dd"/>
<property name="password" value="dd"/>
</bean>
</beans>
容器自动注册propertyOverriderbean,读取dbconn.properties 文件中的属性,并用于
覆盖目标bean 的属性。其配置文件中dataSourcebean 的属性完全是随意输入的,最终被
属性文件的配置覆盖,其属性文件如下:
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql://wonder:3306/j2ee
dataSource.username=root
dataSource.password=32147

注意属性文件的格式必须是:
beanName.property=value
也就是说, dataSource必须是容器中真实存在的bean 名,否则程序将出错。
注意:仅仅察看XML 定义文件,程序无法知道BeanFactory定义是否被覆盖;当有
多个PorpertyOverrideConfigurer对同一个bean 属性定义了覆盖,则最后一个覆盖有效。

关于系统中使用多个PropertyPlaceholderConfigurer的配置及PropertyOverrideConfigurer

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
问:为什么一个应用需要多个数据源 答:有些情况下就是有多个数据源的 问:如果有这样的系统耦合太
因为python3.x不向后兼容,所以假如你要运行其他版本的程序就不得不再装一个2.x的python,因此在配
最近处于两个项目的结合点,新的项目要做,刚做完的项目也还有很多需要修改的地方。所以经常需要来回
比如使用了:android.permission.MODIFY_PHONE_STATE 这个权限是会报错的,clean一下工程才能编译。
其实在几个月前就接触了代码控制工具git了,现在分享一下git在windows配置与简单使用。 1、打开http
CodeBlocks是一个开放源码的全功能的跨平台C/C++集成开发环境。CodeBlocks由纯粹的C++语言开发完成
在PHP的学习过程中,MySQL估计是必然会接触的。 MySQL的管理相信大家也会使用phpmyadmin: 好吧,ph
这个也是以前写的,转过来 【非常有用=小白也可以简单操作】越狱系统中可以让多个Kindle应用程序同
通常情况下,在一个Excel图表中包含有一个横坐标轴和一个纵坐标轴,分别用来标识类别和数值大小,但
在SpringSide 3社区中,不断有人提出多数据源配置的问题,但是时至今日却一直没有一个完美的答案。
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号