它的作用是一个资源属性的配置器,能够将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定义档的实际例子:
<?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属性中:
onlyfun.caterpillar.helloWord=Welcome! 在helloBean的helloWord属性中,${onlyfun.caterpillar.helloWord}将会被hello.properties的helloWord所取代。 如果有多个.properties档案,则可以透过locations属性来设定,例如:
<?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-MessageSource
2010-05-05 15:41 1715将Spring自带的org.springframework.c ... -
ApplicationContextAware
2010-03-30 14:36 1148JDK-doc 2.5.6 Interface Applic ... -
org.springframework.beans.factory.BeanCreationException: Error creating bean wit
2010-01-24 18:45 3809org.springframework.beans.facto ... -
SPRING框架的7大模块
2008-08-23 16:48 981核心容器:核心容器 ... -
使用Spring编写第一个程序-spring初级体验
2008-08-23 16:52 783对最原始的HelloWorld.java ... -
Spring中BeanFactory配置文件的元素解析
2008-08-24 11:39 737<?xml version="1.0" ... -
使用Lookup方法注射方法
2008-08-24 17:46 687spring方法解决下面的问题:一个singleton bea ... -
替换任意的方法
2008-08-24 18:06 825在spring中不但提供了Lookup方法来注射方法,还提供了 ... -
一个普通表单控制器(SimpleFornController)处理视图流转的例子
2008-08-26 09:40 777Spring附有一些简单的窗体处理handler,这些hand ... -
SimpleFormController简单表单控制器的处理流程
2008-08-26 10:19 8691.当表单控制器接 ... -
SPRING分发器(DispatcherServlet)
2008-09-09 00:15 1354分发器(DispatcherServlet) Sprin ... -
Spring的View和ViewResolver的使用
2008-09-11 23:15 1525打开Spring的源代码,我们可以在org.springfra ... -
ModelAndView解析
2008-09-16 09:39 1263查看spring的帮助文档得到以下信息: org.sprin ... -
spring验证器Validator接口
2008-09-16 21:30 2622spring2.0 Validator接口 ... -
spring web mvc配置
2008-09-17 11:04 1122spring内建一个请求驱动 ... -
spring视图解析器
2008-09-17 15:21 1342spring最常用的JSP/JSTL视图解析器是: Int ... -
Spring dataSource配置
2010-01-23 13:40 1812不管通过何种持久化 ... -
AOP(Aspect Oriented Programming ) 面向切面编程
2010-01-23 13:38 830AOP是什么? AOP是OO ...
相关推荐
在Spring中,`PropertyPlaceholderConfigurer`是一个非常重要的类,它用于处理属性文件中的占位符,将它们替换为实际的值。这在配置管理中起到了关键作用,特别是在大型分布式系统中,动态配置管理变得尤为重要。...
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....
例如,可以将数据库连接信息写入属性文件,如`database.properties`,然后在Spring配置文件中使用`PropertyPlaceholderConfigurer`引入属性文件。这样,我们就可以在XML配置中使用`${...}`的方式来引用属性值,如`${...
根据提供的文档信息,我们可以深入探讨Spring框架的核心概念与特性,特别是版本1.2中的关键知识点。下面将基于文档中提到的各个章节进行详细解析。 ### 1. 引言 #### 1.1 概览 Spring框架是一个开源的Java平台,它...
综上所述,Spring框架通过其强大的依赖注入机制和丰富的扩展点,为Java开发者提供了一个灵活、高效、可扩展的开发平台。无论是构建简单的Web应用还是复杂的企业级系统,Spring都能提供强有力的支持。
**Spring框架关键知识点解析** Spring是一个开源的轻量级Java应用开发框架,旨在简化企业级应用程序的开发过程,其核心是控制反转(Inversion of Control, IoC)和面向切面编程(Aspect-Oriented Programming, AOP...
Spring Framework是Java开发中的核心框架,以其灵活、可扩展性著称,广泛应用于企业级应用开发。本文将基于“spring-framework原始阅读笔记”展开,深入探讨Spring的核心组件,包括容器实现、属性名解析、AOP(面向...
Spring默认的`PropertyPlaceholderConfigurer`不直接支持加密的属性文件,但它提供了扩展点,允许我们自定义实现来处理加密后的属性。以下是一种实现方式: 1. 创建一个自定义的`PropertyPlaceholderConfigurer`...
### Spring启动时根据配置文件加载不同文件的知识点详解 #### 一、背景介绍 在实际的应用开发中,根据运行环境的不同(例如开发环境、测试环境、生产环境等),应用程序往往需要连接不同的数据库或其他资源。为了...
### Spring读取Properties文件的核心知识点 #### 1. **引入PropertyPlaceholderConfigurer** 在Spring的配置文件中,首先需要定义一个`PropertyPlaceholderConfigurer` bean,这是Spring用来解析Properties文件并...
下面将详细阐述`基于Spring 2.0的Property OverrideConfig Demo`的相关知识点。 1. **Spring配置文件的扩展** - Spring 2.0引入了`PropertyPlaceholderConfigurer`,用于处理配置文件中的占位符,例如`${property_...
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 是一个基于 Java 的轻量级 Web 开发框架,它提供了模型-视图-控制器(MVC)架构模式来构建可维护、可扩展的Web应用。Log4j 是一个广泛使用的日志记录框架,它提供...
总之,Spring MVC、Spring 和 iBATIS 的整合为 Java Web 开发提供了一套强大的解决方案,涵盖了从用户请求处理到数据持久化的各个层面,同时保持了良好的可扩展性和可维护性。在实际开发中,还需要根据具体需求进行...
下面将详细介绍如何在Spring中使用属性文件以及相关知识点。 1. **属性文件格式** 属性文件通常以`.properties`为扩展名,例如`application.properties`或`database.properties`。文件中的键值对以等号`=`分隔,如...
在Spring框架中,资源文件是不可或缺的部分,它们用于...理解并熟练掌握这些知识点对于有效地利用Spring进行企业级应用开发至关重要。在实际开发中,合理地组织和利用资源文件可以极大地提高代码的可维护性和可扩展性。
IoC使得对象的创建和依赖关系的管理由Spring容器负责,而AOP则允许开发者分离关注点,如日志、事务管理等,使其独立于业务逻辑。 在实际应用中,首先需要将Spring的jar包导入项目中,然后创建一个名为`...