<!-- 屬性文件讀入 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:config/jdbc.properties</value>
</list>
</property>
</bean>
<!-- 數據源定義,使用Apache DBCP 連接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
PropertyPlaceholderConfigurer可以將${...}替換為指定的properties文件或system properties中的值。
${jdbc.username} 從jdbc.properties文件中找到相應的替換。
不同于PropertyPlaceholderConfigurer 替換context文件中的變量,PropertyOverrideConfigurer是在ApplicationContext 初始化的最后,強行將某些Bean的某些屬性,替換成它的properties文件里的值。
比如生產環境的jdbc.properties里定義了jdbc連接為Oracle,并通過PlaceholderConfigurer設置到<bean id="dataSource"> 里,在測試時再載入下面的applicationContex-test.xml文件,就能透明的將配置更改為嵌入式數據庫。
applicationContext-test.xml: 定義載入的properties。
spring/test/jdbc.properties: 將ApplicationContext 中id為dataSource的bean的url屬性改為使用hsqldb。