• [spring]<context:property-placeholder/>


    问题:

    有些参数在某些阶段中是常量,这些参数在不同阶段之间又往往需要改变,如:

      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>
  • 相关阅读:
    Elasticsearch本地环境安装和常用操作
    Scala快速入门
    Flink本地安装和创建Flink应用
    Elasticsearch源码分析
    android6,0申请权限
    JDK动态代理
    Navicat 连接MySQL8.0,错误:Authentication plugin 'caching_sha2_password' cannot be loaded
    mysqldump
    mysql配置远程登录
    将博客搬至CSDN
  • 原文地址:https://www.cnblogs.com/vickylinj/p/9522063.html
Copyright © 2020-2023  润新知