[spring]


問題:

有些參數在某些階段中是常量,這些參數在不同階段之間又往往需要改變,如:

    1. 在開發階段我們連接數據庫時的url,username,password等信息
    2. 分布式應用中client端的server地址,端口等

解決方案:

Spring3中我們可以使用spring3中提供的<context:property-placeholder/>,在數據庫配置文件中可以這樣寫:

1.配置數據庫相關參數

 

<context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/>

或者Spring 2.5:

<bean id="propertyPlaceholderConfigurer" class="org.springframework,beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations" value="classpath:jdbc.properties"/> 
<property name="ignoreUnresolvablePlaceholders" value="true" /> 
</bean>

 ignore-unresolvable="true"

  如果不加會報錯:Could not resolve placeholder...

   原因是因為:spring容器只會維護一個PropertyPlaceholderConfigurer的bean實例,當spring發現容器中有一個該實例后,就會忽略其余的,所以,該標簽只能配置一個,多余的spring會自動忽略。

   在spring2.5中可使用:

 

<property name="ignoreUnresolvablePlaceholders" value="true" />

 

2.jdbc.properties:

jdbc.driverClassName=org.postgresql.Driver jdbc.urlSaas=jdbc:postgresql://180.96.28.100/db jdbc.usernameSaas=test jdbc.passwordSaas=1 druid.pool.size.max=20 druid.pool.size.min=3 druid.pool.size.init=3
 
3.配置數據源

  

<bean id="dataSourceSaasdb" class="com.alibaba.druid.pool.DruidDataSource" 
            init-method="init" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.urlSaas}" />
        <property name="username" value="${jdbc.usernameSaas}" />
        <property name="password" value="${jdbc.passwordSaas}" />
        <!-- 配置初始化大小、最小、最大 -->  
        <property name="initialSize" value="${druid.pool.size.init}" />  
        <property name="minIdle" value="${druid.pool.size.min}" />   
        <property name="maxActive" value="${druid.pool.size.max}" />  
        <!-- 配置監控統計攔截的filters,wall用於防止sql注入,stat用於統計分析 -->
        <property name="filters" value="wall,stat" /> 
</bean>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM