Spring为我们提供了一个PropertyPlaceholderConfigurer,他能够使Bean在配置的时候引用外部属性文件。ropertyPlaceholderConfigurer实现了BeanFactoryPostProcessorBean接口,因此也是一个Bean工厂后处理器。
以前的配置:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destory-metnod="close"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/sampledb"
p:userName="root"
p:password="1234"/>
现在我们可以使用一个jdbc.properties的配置文件:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/sampledb
userName=root
password=1234
属性文件可以定义多个属性,每个属性都由一个属性名和一个属性值组成,两者用“=”隔开。下面通过PropertyPlaceholderConfigurer引入jdbc.properties属性文件,调整数据源Bean的配置:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="classpath:com/baobaotao/placeholder/jdbc.properties"
p:fileEncoding="utf-8"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="&{driverClassName}"
p:url="&{url}"
p:userName="${password}"/>
PropertyPlaceholderConfigurer其他属性:
locations:如果是一个属性文件,用location足以,如果是多个属性文件,locations搞定。
fileEncoding:属性文件的编码格式。
order:如果配置文件中定义了多个PropertyPlaceholderConfigurer,则通过此属性来制定优先顺序。
使用<context:property-placeholder>引用属性文件
<context:property-placeholder location="classpath:com/baobaotao/placeholder/jdbc:properties"/>
当然 还可以基于注解直接给java对象附上属性值,详细的请参看《spring3.x。。实战》