zoukankan      html  css  js  c++  java
  • 双数据源切换

    1. jdbc.properties

    #============================================================================
    # MySQL
    #============================================================================
    jdbc.mysql.driver=com.mysql.jdbc.Driver jdbc.mysql.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true jdbc.mysql.username=root jdbc.mysql.password=123
    #============================================================================
    # MS SQL Server (JTDS)
    #============================================================================
    jdbc.sqlserver.driver=net.sourceforge.jtds.jdbc.Driver jdbc.sqlserver.url=jdbc:jtds:sqlserver://young4j.com jdbc.sqlserver.username=root jdbc.sqlserver.password=123
    #============================================================================
    # 通用配置
    #============================================================================
    jdbc.initialSize=5
    jdbc.minIdle=5
    jdbc.maxIdle=20
    jdbc.maxActive=100
    jdbc.maxWait=100000
    jdbc.defaultAutoCommit=false
    jdbc.removeAbandoned=true
    jdbc.removeAbandonedTimeout=600
    jdbc.testWhileIdle=true
    jdbc.timeBetweenEvictionRunsMillis=60000
    jdbc.numTestsPerEvictionRun=20
    jdbc.minEvictableIdleTimeMillis=300000

    2. applicationContext.xml

    <bean id="propertyConfigurer"
            class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="location" value="classpath:jdbc.properties" />
        </bean>
        <bean id="sqlServerDataSource" class="org.apache.commons.dbcp.BasicDataSource"
            destroy-method="close">
            <property name="driverClassName" value="${jdbc.sqlserver.driver}" />
            <property name="url" value="${jdbc.sqlserver.url}" />
            <property name="username" value="${jdbc.sqlserver.username}" />
            <property name="password" value="${jdbc.sqlserver.password}" />
            <property name="initialSize" value="${jdbc.initialSize}" />
            <property name="minIdle" value="${jdbc.minIdle}" />
            <property name="maxIdle" value="${jdbc.maxIdle}" />
            <property name="maxActive" value="${jdbc.maxActive}" />
            <property name="maxWait" value="${jdbc.maxWait}" />
            <property name="defaultAutoCommit" value="${jdbc.defaultAutoCommit}" />
            <property name="removeAbandoned" value="${jdbc.removeAbandoned}" />
            <property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}" />
            <property name="testWhileIdle" value="${jdbc.testWhileIdle}" />
            <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" />
            <property name="numTestsPerEvictionRun" value="${jdbc.numTestsPerEvictionRun}" />
            <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" />
        </bean>
        <bean id="mySqlDataSource" class="org.apache.commons.dbcp.BasicDataSource"
            destroy-method="close">
            <property name="driverClassName" value="${jdbc.mysql.driver}" />
            <property name="url" value="${jdbc.mysql.url}" />
            <property name="username" value="${jdbc.mysql.username}" />
            <property name="password" value="${jdbc.mysql.password}" />
            <property name="initialSize" value="${jdbc.initialSize}" />
            <property name="minIdle" value="${jdbc.minIdle}" />
            <property name="maxIdle" value="${jdbc.maxIdle}" />
            <property name="maxActive" value="${jdbc.maxActive}" />
            <property name="maxWait" value="${jdbc.maxWait}" />
            <property name="defaultAutoCommit" value="${jdbc.defaultAutoCommit}" />
            <property name="removeAbandoned" value="${jdbc.removeAbandoned}" />
            <property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}" />
            <property name="testWhileIdle" value="${jdbc.testWhileIdle}" />
            <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" />
            <property name="numTestsPerEvictionRun" value="${jdbc.numTestsPerEvictionRun}" />
            <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" />
        </bean>
        <bean id="multipleDataSource" class="com.young4j.MultipleDataSource">
            <property name="defaultTargetDataSource" ref="mySqlDataSource" />
            <property name="targetDataSources">
                <map>
                    <entry key="mySqlDataSource" value-ref="mySqlDataSource" />
                    <entry key="sqlServerDataSource" value-ref="sqlServerDataSource" />
                </map>
            </property>
        </bean>
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="multipleDataSource" />
        </bean>
    
        <!-- mybatis.spring自动映射 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.young4j" />
        </bean>
    
        <!-- 自动扫描,多个包以 逗号分隔 -->
        <context:component-scan base-package="com.young4j" />
        <aop:aspectj-autoproxy />

    3.MultipleDataSource.java

    public class MultipleDataSource extends AbstractRoutingDataSource {
    
        private static final ThreadLocal<String> dataSourceKey = new InheritableThreadLocal<String>();
    
        public static void setDataSourceKey(String dataSource) {
            dataSourceKey.set(dataSource);
        }
    
        @Override
        protected Object determineCurrentLookupKey() {
            return dataSourceKey.get();
        }
    
    }

    4.test.java

    MultipleDataSource.setDataSourceKey("sqlServerDataSource");
    List<Map<String, Object>> list2 = sqlServerMapper.getList();
  • 相关阅读:
    springsecurity-微服务-springsecurity工具类封装
    springsecurity-微服务-认证授权的过程
    springsecurity-CSRF
    springsecurity-自动登录实现
    Vulnhub-靶机-DC: 9
    Xss-labs-level3-6
    靶机-生成自有账户和密码提权
    靶机-敲击相关方式汇总
    Vulnhub-靶机-DIGITALWORLD.LOCAL: BRAVERY
    Xss-labs-level1-2
  • 原文地址:https://www.cnblogs.com/yangfei-beijing/p/6677512.html
Copyright © 2011-2022 走看看