何为Spring?提起Spring我们可能想到AOP、控制反转、依赖注入等一些概念性的东西进入脑海。我们平常的一些配置也用到这些东西,但一些原理性的东西我们却接触不到,这些配置也完全能达到要求。本文将不断搜集一些平常不大用的Spring知识。
1.Spring后置处理器BeanFactoryPostProcessor
BeanFactoryPostProcessor在Spring创建BeanFactory后执行,Spring IoC容器允许BeanFactoryPostProcessor在容器实际实例化任何其它的bean之前读取配置元数据,并有可能修改它,也可以BeanFactoryPostProcessor中手动注册bean。参考http://java.chinaitlab.com/Spring/804402_2.html和http://blog.youkuaiyun.com/xiao_jun_0820/article/details/7242379
我们有时在Spring配置文件中读取properties配置文件(如数据库连接配置),会用到org.springframework.beans.factory.config.PropertyPlaceholderConfigurer,这个类的父类实现了BeanFactoryPostProcessor接口,在实例化dataSource之前读取配置文件并修改bean的配置信息。
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:dbconfig.properties"/>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</bean>