Spring容器扩展点-PropertyPlaceholderConfigurer类
来源:互联网 发布:报了java培训班学不会 编辑:程序博客网 时间:2024/04/30 01:30
它的作用是一个资源属性的配置器,能够将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
来看一个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.jdbcDriverjdbc.url=jdbc:hsqldb:hsql://production:9002jdbc.username=sajdbc.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类
- Spring容器扩展--PropertyPlaceholderConfigurer
- [Spring]Spring容器扩展点
- Spring PropertyPlaceholderConfigurer 自定义扩展
- spring扩展:PropertyPlaceHolderConfigurer
- Spring PropertyPlaceholderConfigurer 自定义扩展
- Spring PropertyPlaceholderConfigurer 自定义扩展
- 【Spring学习22】容器扩展点:FactoryBean
- Spring容器扩展点之BeanFactoryPostProcessor
- Spring容器扩展点之BeanPostProcessor
- [Spring]PropertyPlaceholderConfigurer类相关
- spring中的PropertyPlaceholderConfigurer类
- spring之PropertyPlaceholderConfigurer类
- 《玩转Spring》第一章 PropertyPlaceholderConfigurer扩展
- PropertyPlaceholderConfigurer扩展
- SPRING.NET 1.3.2 学习26--容器扩展点
- Spring架构详解之Ioc容器的扩展点
- 【Spring学习23】容器扩展点:后置处理器BeanPostProcessor
- CodeBlocks的使用技巧
- Linux网络报文接收与发送概述
- Matlab 2013 (64)+ VS 2013 + OpenCV 2.4.8
- 将一个制定分隔符的字符串进行分割
- windows路由表详解
- Spring容器扩展点-PropertyPlaceholderConfigurer类
- awk linux
- 升级IE11
- OpenAM平台搭建
- Linux中的工作队列
- Android开发之日历控件实现
- ORA-01555 原因与解决
- trgjhrythjn
- startService与bindService有什么区别