Spring Bean引用例子
如何注入值到Spring bean屬性
Spring bean加載多個配置文件
Spring內部bean實例
Spring Bean作用域實例
Spring集合 (List,Set,Map,Properties) 實例
Spring ListFactoryBean實例
Spring SetFactoryBean實例
Spring MapFactoryBean例子
Spring注入日期到bean屬性-CustomDateEditor
Spring PropertyPlaceholderConfigurer實例
Spring bean配置繼承
Spring依賴檢查
Spring使用@Required註解依賴檢查
Spring自定義@Required-style註解
Spring Bean InitializingBean和DisposableBean實例
Spring Bean init-method 和 destroy-method實例
Spring @PostConstruct和@PreDestroy實例
Spring PropertyPlaceholderConfigurer實例
很多時候,大多數Spring開發人員只是把整個部署的詳細信息(數據庫的詳細信息,日誌文件的路徑)寫在XML bean配置文件如下:
<bean id="customerDAO" class="com.yiibai.customer.dao.impl.JdbcCustomerDAO">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="customerSimpleDAO" class="com.yiibai.customer.dao.impl.SimpleJdbcCustomerDAO">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/yiibaijava" />
<property name="username" value="root" />
<property name="password" value="password" />
</bean>
但是,在企業環境中,部署的細節通常只可以由系統管理員或數據庫管理員來'觸碰',他們可能會拒絕直接訪問你的bean的配置文件,它們會要求部署配置一個單獨的文件,例如,一個簡單的性能(properties)文件,僅具有部署細節。
PropertyPlaceholderConfigurer示例
爲了解決這個問題,可以使用 PropertyPlaceholderConfigurer 類通過一個特殊的格式在外部部署細節到一個屬性(properties )文件,以及訪問bean的配置文件 – ${variable}.
創建一個屬性文件(database.properties),包括數據庫的詳細信息,把它放到你的項目類路徑。
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/yiibai_db
jdbc.username=root
jdbc.password=123456
在聲明bean配置文件和提供一個PropertyPlaceholderConfigurer映射到 剛纔創建的「database.properties」屬性文件。
<property name="location">
<value>database.properties</value>
</property>
</bean>
完整的示例
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>database.properties</value>
</property>
</bean>
<bean id="customerDAO" class="com.yiibai.customer.dao.impl.JdbcCustomerDAO">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="customerSimpleDAO"
class="com.yiibai.customer.dao.impl.SimpleJdbcCustomerDAO">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<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 於某個常量,分享給所有其他bean。例如,定義在一個屬性文件中的日誌文件的位置,並通過 ${log.filepath} 訪問不同的 bean 配置文件的屬性值。