使用方式
<?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>
其中hello.properties文件中的内容为:
onlyfun.caterpillar.helloWord=Welcome!
原理
其中PropertyPlaceholderConfigurer正是BeanFactoryPostProcessor的一个重要实现。
Allows for custom modification of an application context’s bean definitions, adapting the bean property values of the context’s underlying bean factory.
A BeanFactoryPostProcessor may interact with and modify bean definitions, but never bean instances.
由此可见,BeanFactoryPostProcessor只能处理BeanDefinition; 是在所有Bean 实例化之前就执行的。
未完待续…