`
prodream
  • 浏览: 106144 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

spring的扩展点--PropertyPlaceholderConfigurer

阅读更多

它的作用是一个资源属性的配置器,能够将BeanFactory的里定义的内容放在一个以.propertis后缀的文件中.

 

要了解这个类首先要弄清楚一个概念:bean factory post-processor
官方解释是这样的:
A bean factory post-processor is a java class which implements the
org.springframework.beans.factory.config.BeanFactoryPostProcessor interface. It is executed manually (in the case of the BeanFactory) or automatically (in the case of the ApplicationContext) to apply changes of some sort to an entire BeanFactory, after it has been constructed.
我理解的意思是这样的:
1.首先bean factory post-processor实现了org.springframework.beans.factory.config.BeanFactoryPostProcessor接口。
2.在BeanFactory的情况下它被手动的执行。
3.在ApplicationContext的条件下它会自动的执行。
4.最关键的一点是,是在一个类的实例被构造出来之后,对整个BeanFactory进行修改。

--------------------------------------------------------------------------------------------------------------------------------

文章来自:http://hi.baidu.com/fytcm/blog/item/756acffdcff2541508244d2d.html

Spring的框架中为您提供了一个 BeanFactoryPostProcessor 的实作类别: org.springframework.beans.factory.config.PropertyPlaceholderConfigurer。藉由这个类别,您可以将一些组态设定,移出至.properties档案中,如此的安排可以让XML定义档负责系统相关设定,而.properties档可以作为客户根据需求,自定义一些相关的参数。
来看一个Bean定义档的实际例子:

  • beans-config.xml
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" 
      "http://www.springframework.org/dtd/spring-beans.dtd"> 

<beans>  
        <bean id="configBean" 
 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
            <property name="location"> 
                <value>hello.properties</value> 
            </property> 
        </bean> 

        <bean id="helloBean" class="onlyfun.caterpillar.HelloBean"> 
            <property name="helloWord"> 
                <value>${onlyfun.caterpillar.helloWord}</value> 
            </property> 
        </bean>
</beans>

假设在helloBean中有许多依赖注入的属性,这些都是比较不常变动的属性,而其中helloWord会经常变动,可以透过hello.properties来简单的设定,而这个资讯已设定在configBean的location属性中:
  • hello.properties
onlyfun.caterpillar.helloWord=Welcome!

在helloBean的helloWord属性中,${onlyfun.caterpillar.helloWord}将会被hello.properties的helloWord所取代。

如果有多个.properties档案,则可以透过locations属性来设定,例如:

  • beans-config.xml
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" 
      "http://www.springframework.org/dtd/spring-beans.dtd"> 

<beans>  
        <bean id="configBean" 
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
            <property name="locations"> 
                <list>
                    <value>hello.properties</value> 
                    <value>welcome.properties</value> 
                    <value>other.properties</value> 
    
                </list>
            </property>     
        </bean> 

        <bean id="helloBean" class="onlyfun.caterpillar.HelloBean"> 
            <property name="helloWord"> 
                <value>${onlyfun.caterpillar.helloWord}</value> 
            </property> 
            ...
        </bean>
</beans>
 
======================================
PropertyPlaceholderConfigurer类就是bean factory post-processor的一种,它的作用是一个资源属性的配置器,能够将BeanFactory的里定义的内容放在一个以.propertis后缀的文件中。
例如
---spring-context.xml----
 <bean id="propertyConfigurer"     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
           <property name="locations">
               <list>
                   <value>/WEB-INF/jdbc.properties</value>
               </list>
           </property>
 </bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      <property name="driverClassName"><value>${driver}</value></property>
      <property name="url"><value>jdbc:${dbname}</value></property>
</bean>
而实际的jdbc.propertis文件是
jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://production:9002
jdbc.username=sa
jdbc.password=root
而jdbc.propertis是怎样引用的呢:
 
将上边一段配置注册在web.xml中就可以了
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-context.xml</param-value>
</context-param>
当然,不要忘了spring的监听器注册
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
这样,一个简单的数据源就设置完毕了。
实际上,PropertyPlaceholderConfigurer起的作用就是将占位符指向的数据库配置信息放在bean中定义
的工具。
分享到:
评论

相关推荐

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

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

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.1.1. 使用BeanPostProcessor的Hello World示例 3.7.1.2. RequiredAnnotationBeanPostProcessor示例 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7....

    4.Spring应用扩展.pptx

    例如,可以将数据库连接信息写入属性文件,如`database.properties`,然后在Spring配置文件中使用`PropertyPlaceholderConfigurer`引入属性文件。这样,我们就可以在XML配置中使用`${...}`的方式来引用属性值,如`${...

    spring-reference1.2.pdf

    根据提供的文档信息,我们可以深入探讨Spring框架的核心概念与特性,特别是版本1.2中的关键知识点。下面将基于文档中提到的各个章节进行详细解析。 ### 1. 引言 #### 1.1 概览 Spring框架是一个开源的Java平台,它...

    spring-reference.pdf

    综上所述,Spring框架通过其强大的依赖注入机制和丰富的扩展点,为Java开发者提供了一个灵活、高效、可扩展的开发平台。无论是构建简单的Web应用还是复杂的企业级系统,Spring都能提供强有力的支持。

    spring

    **Spring框架关键知识点解析** Spring是一个开源的轻量级Java应用开发框架,旨在简化企业级应用程序的开发过程,其核心是控制反转(Inversion of Control, IoC)和面向切面编程(Aspect-Oriented Programming, AOP...

    spring-framework:spring-framework原始阅读笔记-spring源码阅读

    Spring Framework是Java开发中的核心框架,以其灵活、可扩展性著称,广泛应用于企业级应用开发。本文将基于“spring-framework原始阅读笔记”展开,深入探讨Spring的核心组件,包括容器实现、属性名解析、AOP(面向...

    在Spring中使用加密外部属性文件

    Spring默认的`PropertyPlaceholderConfigurer`不直接支持加密的属性文件,但它提供了扩展点,允许我们自定义实现来处理加密后的属性。以下是一种实现方式: 1. 创建一个自定义的`PropertyPlaceholderConfigurer`...

    spring 启动时加载不同的文件

    ### Spring启动时根据配置文件加载不同文件的知识点详解 #### 一、背景介绍 在实际的应用开发中,根据运行环境的不同(例如开发环境、测试环境、生产环境等),应用程序往往需要连接不同的数据库或其他资源。为了...

    spring读取properties

    ### Spring读取Properties文件的核心知识点 #### 1. **引入PropertyPlaceholderConfigurer** 在Spring的配置文件中,首先需要定义一个`PropertyPlaceholderConfigurer` bean,这是Spring用来解析Properties文件并...

    基于Spring2.0的Property OverrideConfig Demo

    下面将详细阐述`基于Spring 2.0的Property OverrideConfig Demo`的相关知识点。 1. **Spring配置文件的扩展** - Spring 2.0引入了`PropertyPlaceholderConfigurer`,用于处理配置文件中的占位符,例如`${property_...

    spring.net中文手册在线版

    12.2.3.Spring.NET提供的切入点实现类 12.2.3.1.静态切入点 12.2.3.2.动态切入点 12.2.4.自定义切入点 12.3.Spring.NET的通知类型 12.3.1.通知的生命周期 12.3.2.通知类型 12.3.2.1.拦截环绕通知 12.3.2.2.前置通知 ...

    spring mvc log4j

    **Spring MVC 集成 Log4j 知识点详解** Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它提供了模型-视图-控制器(MVC)架构模式来构建可维护、可扩展的Web应用。Log4j 是一个广泛使用的日志记录框架,它提供...

    springMVC+spring+ibatis

    总之,Spring MVC、Spring 和 iBATIS 的整合为 Java Web 开发提供了一套强大的解决方案,涵盖了从用户请求处理到数据持久化的各个层面,同时保持了良好的可扩展性和可维护性。在实际开发中,还需要根据具体需求进行...

    spring使用属性文件

    下面将详细介绍如何在Spring中使用属性文件以及相关知识点。 1. **属性文件格式** 属性文件通常以`.properties`为扩展名,例如`application.properties`或`database.properties`。文件中的键值对以等号`=`分隔,如...

    spring资源文件

    在Spring框架中,资源文件是不可或缺的部分,它们用于...理解并熟练掌握这些知识点对于有效地利用Spring进行企业级应用开发至关重要。在实际开发中,合理地组织和利用资源文件可以极大地提高代码的可维护性和可扩展性。

    最新spring框架学习笔记(全)资料 (2).pdf

    IoC使得对象的创建和依赖关系的管理由Spring容器负责,而AOP则允许开发者分离关注点,如日志、事务管理等,使其独立于业务逻辑。 在实际应用中,首先需要将Spring的jar包导入项目中,然后创建一个名为`...

Global site tag (gtag.js) - Google Analytics