[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