它的作用是一个资源属性的配置器,能够将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 1660将Spring自带的org.springframework.c ... -
ApplicationContextAware
2010-03-30 14:36 1119JDK-doc 2.5.6 Interface Applic ... -
org.springframework.beans.factory.BeanCreationException: Error creating bean wit
2010-01-24 18:45 3731org.springframework.beans.facto ... -
SPRING框架的7大模块
2008-08-23 16:48 946核心容器:核心容器 ... -
使用Spring编写第一个程序-spring初级体验
2008-08-23 16:52 751对最原始的HelloWorld.java ... -
Spring中BeanFactory配置文件的元素解析
2008-08-24 11:39 711<?xml version="1.0" ... -
使用Lookup方法注射方法
2008-08-24 17:46 656spring方法解决下面的问题:一个singleton bea ... -
替换任意的方法
2008-08-24 18:06 802在spring中不但提供了Lookup方法来注射方法,还提供了 ... -
一个普通表单控制器(SimpleFornController)处理视图流转的例子
2008-08-26 09:40 740Spring附有一些简单的窗体处理handler,这些hand ... -
SimpleFormController简单表单控制器的处理流程
2008-08-26 10:19 8261.当表单控制器接 ... -
SPRING分发器(DispatcherServlet)
2008-09-09 00:15 1309分发器(DispatcherServlet) Sprin ... -
Spring的View和ViewResolver的使用
2008-09-11 23:15 1485打开Spring的源代码,我们可以在org.springfra ... -
ModelAndView解析
2008-09-16 09:39 1234查看spring的帮助文档得到以下信息: org.sprin ... -
spring验证器Validator接口
2008-09-16 21:30 2567spring2.0 Validator接口 ... -
spring web mvc配置
2008-09-17 11:04 1088spring内建一个请求驱动 ... -
spring视图解析器
2008-09-17 15:21 1306spring最常用的JSP/JSTL视图解析器是: Int ... -
Spring dataSource配置
2010-01-23 13:40 1778不管通过何种持久化 ... -
AOP(Aspect Oriented Programming ) 面向切面编程
2010-01-23 13:38 810AOP是什么? AOP是OO ...
相关推荐
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
Spring中PropertyPlaceholderConfigurer的使用
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
Spring属性占位符PropertyPlaceholderConfigurer的使用,自己写的一个demo
#Spring 属性注释扩展的 PropertyPlaceHolderConfigurer 使用注解将配置属性注入到 Spring 组件中。 注意:Spring 3 现在支持使用 @Value 注释的容器的。 该项目仅用于 Spring 2.5.x 支持。 ##入门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....
NULL 博文链接:https://wokeke.iteye.com/blog/2214113
在Spring3中配置数据源,包括DBCP,C3P0,Proxool,Bonecp主要的数据源,里面...<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <value>classpath:proxool.properties ...
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <value>classpath*:jdbc.properties <!-- 数据源配置,主要用于开发测试...
主要介绍了Spring如何使用PropertyPlaceholderConfigurer读取文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
6 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 7 8 9 <value>/WEB-INF/jdbc.properties 10 11 12 13 14 它配置了以下功能: 读取...
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.前置通知 ...
4.8 容器扩展点. 78 4.8.1 使用BeanPostProcessor 来自定义bean 78 4.8.1.1 示例:BeanPostProcessor 风格的Hello World.. 79 4.8.1.2 示例:RequiredAnnotationBeanPostProcessor 81 4.8.2 ...
不使用XML定义档进行 Bean设置 Aware 相关介面 BeanPostProcessor BeanFactoryPostProcessor PropertyPlaceholderConfigurer PropertyOverrideConfigurer CustomEditorConfigurer ...
NULL 博文链接:https://chyy001.iteye.com/blog/1338488
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <value>classpath:/deploy.properties <!-- 配置sessionFactory ...
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <value>WEB-INF/jdbc.properties class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-...
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <!-- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" lazy-init=...
PropertyPlaceholderConfigurer PropertyResourceConfigurer PropertyValue PropertyValues PropertyValuesEditor PrototypeAspectInstanceFactory PrototypeTargetSource ProxyConfig ProxyFactory ...