`
yanrongzhu521
  • 浏览: 5104 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于spring中.properties配置文件取值的问题--PropertyPlaceholderConfigurer

阅读更多
PropertyPlaceholderConfigurer作为一个bean factory post-processor实现,可以用来将BeanFactory定义中的属性值放置到另一个单独的Java Properties格式的文件中。这使得用户不用对BeanFactory的主XML定义文件进行复杂和危险的修改,就可以定制一些基本的属性(比如说数据库的urls,用户名和密码)。

考虑一个BeanFactory定义的片断,里面用占位符定义了DataSource:

在下面这个例子中,定义了一个datasource,并且我们会在一个外部Porperties文件中配置一些相关属性。 在运行时,我们为BeanFactory提供一个PropertyPlaceholderConfigurer,它将用Properties文件中的值替换掉这个datasource的属性值:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>${jdbc.driverClassName}</value></property>
<property name="url"><value>${jdbc.url}</value></property>
<property name="username"><value>${jdbc.username}</value></property>
<property name="password"><value>${jdbc.password}</value></property>
</bean>
真正的值来自于另一个Properties格式的文件:

jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://production:9002
jdbc.username=sa
jdbc.password=root

 我们的Bean配置如下:

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>/WEB-INF/jdbc.properties</value>
</property>
<!--
使用locations属性定义多个配置文件
       <property name="locations">
            <list>
                <value>classpath:config/maxid.properties</value>
                <value>classpath:config/jdoserver.properties</value>
            </list>
</property>
  -->
</bean>


引用的时候,是在web.xml中实现的配置
<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
监听:
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
如上所述,我们定义了一个PropertyPlaceholderConfigurer类的实例,并将其位置属性设置为我们的属性文件。该类被实现为Bean工厂的后处理器,并将使用定义在文件中的属性来代替所有的占位符(${...}value)。

  利用这种技术,我们可以从applicationContext.xml中移除所有特定于主机的配置属性。通过这种方式,我们可以自由地为该文件添加新的Bean,而不必担心特定于主机属性的同步性。这样可以简化生产部署和维护。


分享到:
评论

相关推荐

    org.springframework.beans.factory.config.PropertyPlaceholderConfigurer

    这里,`PropertyPlaceholderConfigurer` 会查找指定位置(例如 `config.properties`)的属性文件,并将其中的键值对与XML或Java配置中的占位符进行匹配替换。这使得我们的配置更加灵活,可以将一些敏感信息(如...

    SPRING:bean配置properties

    这里,`propertyConfigurerForAnalysis`是`PropertyPlaceholderConfigurer`的实例bean,其作用是将`dbQuery.properties`中的键值对作为环境变量注入到Spring容器中。`classpath:`前缀表示该文件位于类路径下,即项目...

    Spring中PropertyPlaceholderConfigurer的使用

    使用 PropertyPlaceholderConfigurer 需要首先在 Spring 配置文件中定义一个 bean,例如: ```xml &lt;bean id="propertyConfigurerForAnalysis" class="org.springframework.beans.factory.config....

    spring无法读取properties文件数据问题详解

    在 Service 中,如果配置的路径是 classpath:config.properties,可能会出现多个文件的情况。这时,需要将路径改为 classpath*:config.properties,以便加载所有的配置文件。 例如: ```xml &lt;context:property-...

    Spring3.0 配置文件中加载Properties文件的小例子

    接下来,我们将在Spring的配置文件(如`applicationContext.xml`)中声明一个`PropertyPlaceholderConfigurer` bean,它负责加载并解析Properties文件。配置如下: ```xml class="org.springframework.beans....

    加载properties配置文件的几种方法

    Spring提供了`PropertyPlaceholderConfigurer`类,可以方便地从.properties文件中读取属性。首先,在Spring的配置文件(如`applicationContext.xml`)中定义一个bean,然后指定properties文件的位置: ```xml ...

    详解spring applicationContext.xml 配置文件

    4. `&lt;context:property-placeholder&gt;`:这是一个特殊的bean,用于加载外部属性文件(如`jdbc.properties`),使得在配置中可以使用`${}`引用这些属性,避免硬编码。 5. `&lt;dataSource&gt;`:这里配置了数据源,Druid是...

    Spring项目application.xml配置文件加解密

    在Spring项目中,`application.xml`配置文件是核心配置组件,它包含了应用的bean定义、数据源、事务管理等重要信息。为了保护敏感信息,如数据库连接字符串、API密钥等,我们需要对这些配置进行加密。本文将详细介绍...

    Spring PropertyPlaceholderConfigurer配置文件加载器集成ZooKeeper来实现远程配置读取

    在Spring中,`PropertyPlaceholderConfigurer`是一个非常重要的类,它用于处理属性文件中的占位符,将它们替换为实际的值。这在配置管理中起到了关键作用,特别是在大型分布式系统中,动态配置管理变得尤为重要。...

    Spring项目中怎么配置log4j

    在Spring项目中配置log4j是一项基础且重要的工作,它能帮助我们记录应用程序的运行日志,便于调试、排查问题和性能分析。Log4j是一个广泛使用的Java日志框架,提供灵活的日志记录功能。接下来,我们将详细讲解如何在...

    spring 启动时加载不同的文件

    - 在这个方法中,首先通过调用`setGollfPropFiles()`方法读取`deploy.properties`文件中的`DATE_SOURCE`属性值。 - 根据属性值的不同,决定加载`dbconn.properties`还是`dbconn2.properties`文件。 - 将选定的...

    Spring如何使用PropertyPlaceholderConfigurer读取文件

    Spring如何使用...使用PropertyPlaceholderConfigurer可以将配置文件的路径放在java虚拟机JVM的自定义变量中,例如:-Ddev.config=/dev.properties,这样可以实现配置文件的路径根据环境的变化而变化。 ...

    spring mvc 读取配置文件

    在Spring MVC框架中,配置文件是整个应用的核心组成部分,它定义了bean的创建、依赖关系以及各种服务的配置。这篇博客“spring mvc 读取配置文件”将深入探讨如何在Spring MVC中读取和使用配置文件,以及相关工具的...

    Spring属性占位符PropertyPlaceholderConfigurer的使用

    当Spring容器启动时,`PropertyPlaceholderConfigurer`会自动找到`config.properties`文件,读取其中的`db.url`属性,并替换掉`${db.url}`,从而完成数据源的配置。 除了基本的属性文件加载,`...

    关于spring系统中多系统的配置

    #### Spring中的PropertyPlaceholderConfigurer类 在Spring框架中,`PropertyPlaceholderConfigurer`是一种特殊的Bean,它被用来处理Spring配置文件中的占位符(placeholder),并将它们替换为具体的值。这些值通常...

    基于Spring2.0 Property Placeholder配置的源码例子

    在Spring配置文件中,我们需要声明一个`PropertyPlaceholderConfigurer`的实例,并指定属性文件的位置。例如: ```xml &lt;bean id="propertyConfigurer" class="org.springframework.beans.factory.config....

    spring读取properties

    在Spring框架中,读取和使用...在Spring的配置文件中,首先需要定义一个`PropertyPlaceholderConfigurer` bean,这是Spring用来解析Properties文件并将其值注入到其他bean中的关键组件。如示例所示: ```xml ...

    SSM 读取properties文件

    然后在Spring的配置XML文件中声明`PropertyPlaceholderConfigurer`,指定文件位置和属性占位符的前缀: ```xml &lt;bean id="propertyConfigurer" class="org.springframework.beans.factory.config....

    spring2+hibernate3典型配置

    这里通过 `&lt;bean&gt;` 定义了一个 `PropertyPlaceholderConfigurer` 类型的 Bean,用于读取 `jdbc.properties` 文件中的配置信息,并在后续配置文件中通过 `${...}` 形式进行引用。 ##### 3. `applicationContext-...

Global site tag (gtag.js) - Google Analytics