亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > Java > 正文

Spring配置多數(shù)據(jù)源切換

2024-07-14 08:43:29
字體:
供稿:網(wǎng)友

多數(shù)據(jù)源切換

db.properties

#MySQLjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/test?autoReconnect=true&characterEncoding=utf-8jdbc.username=rootjdbc.password=admin#定義初始連接數(shù)initialSize=0#定義最大連接數(shù)maxActive=1000#定義最大空閑maxIdle=20#定義最小空閑minIdle=1#定義最長(zhǎng)等待時(shí)間maxWait=60000#MySQL# driverClassName 根據(jù)url自動(dòng)識(shí)別 這一項(xiàng)可配可不配,如果不配置druid會(huì)根據(jù)url自動(dòng)識(shí)別dbType,然后選擇相應(yīng)的driverClassNamejdbc.driver1=com.mysql.jdbc.Driverjdbc.url1=jdbc:mysql://localhost:3306/test1?allowMultiQueries=true&autoReconnect=true&characterEncoding=utf-8jdbc.username1=rootjdbc.password1=admin# 初始化時(shí)建立物理連接的個(gè)數(shù)。初始化發(fā)生在顯示調(diào)用init方法,或者第一次getConnection時(shí)initialSize1=0# 最大連接池?cái)?shù)量maxActive1=1000#定義最小空閑minIdle1=1# 獲取連接時(shí)最大等待時(shí)間,單位毫秒。配置了maxWait之后, # 缺省啟用公平鎖,并發(fā)效率會(huì)有所下降, # 如果需要可以通過配置useUnfairLock屬性為true使用非公平鎖。maxWait1=60000# druid 監(jiān)控# 屬性類型是字符串,通過別名的方式配置擴(kuò)展插件, # 常用的插件有: # 監(jiān)控統(tǒng)計(jì)用的filter:stat # 日志用的filter:log4j # 防御sql注入的filter:wallfilters1=stat,log4j# 配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒timeBetweenEvictionRunsMillis1=60000# 配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒minEvictableIdleTimeMillis1=300000# 建議配置為true,不影響性能,并且保證安全性。 # 申請(qǐng)連接的時(shí)候檢測(cè),如果空閑時(shí)間大于 # timeBetweenEvictionRunsMillis, # 執(zhí)行validationQuery檢測(cè)連接是否有效。testWhileIdle1=true# 申請(qǐng)連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效,做了這個(gè)配置會(huì)降低性能。testOnBorrow1=false# 歸還連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效,做了這個(gè)配置會(huì)降低性能testOnReturn1=false# 是否緩存preparedStatement,也就是PSCache。# PSCache對(duì)支持游標(biāo)的數(shù)據(jù)庫(kù)性能提升巨大,比如說oracle。 # 在mysql5.5以下的版本中沒有PSCache功能,建議關(guān)閉掉。# 作者在5.5版本中使用PSCache,通過監(jiān)控界面發(fā)現(xiàn)PSCache有緩存命中率記錄, # 該應(yīng)該是支持PSCache。poolPreparedStatements1=false# 要啟用PSCache,必須配置大于0,當(dāng)大于0時(shí), # poolPreparedStatements自動(dòng)觸發(fā)修改為true。 # 在Druid中,不會(huì)存在Oracle下PSCache占用內(nèi)存過多的問題, # 可以把這個(gè)數(shù)值配置大一些,比如說100maxOpenPreparedStatements1=-1

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:context="http://www.springframework.org/schema/context"  xmlns:tx="http://www.springframework.org/schema/tx"  xmlns:websocket="http://www.springframework.org/schema/websocket"  xsi:schemaLocation="    http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans.xsd    http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context.xsd    http://www.springframework.org/schema/tx    http://www.springframework.org/schema/tx/spring-tx.xsd    http://www.springframework.org/schema/websocket    http://www.springframework.org/schema/websocket/spring-websocket.xsd">  <!-- spring使用注解 配置掃描  com.ys下的掃描 但是在springmvc里邊已經(jīng)掃描一次了   這時(shí)就要加上屬性 use-default-filters="true"  這個(gè)屬性就是使用默認(rèn)的掃描    默認(rèn)就掃描com.ys下所有 設(shè)置為false 在下邊配置需要掃描的部分-->   <!-- 現(xiàn)在的配置就只會(huì)掃描帶@Service和@Repository注解的類 -->  <context:component-scan base-package="com" use-default-filters="false">  <!-- org.springframework.stereotype.Service就是注解@service 這個(gè)注解使用在service里 所以就是掃描service包   org.springframework.stereotype.Repository  Repository倉(cāng)庫(kù)-->    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>    <context:include-filter type="annotation" expression="org.springframework.beans.factory.annotation.Autowired"/>    <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>    <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>  </context:component-scan>  <!-- 讀取properties文件 -->  <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">    <property name="locations">      <list>        <value>classpath:db.properties</value>      </list>    </property>  </bean>  <!-- 配置連接池?cái)?shù)據(jù)源  文檔搜索BasicDataSource -->  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">    <!-- results in a setDriverClassName(String) call -->    <property name="driverClassName" value="${jdbc.driver}"/>    <property name="url" value="${jdbc.url}"/>    <property name="username" value="${jdbc.username}"/>    <property name="password" value="${jdbc.password}"/>    <!-- 初始化連接大小 -->    <property name="initialSize" value="${initialSize}"></property>    <!-- 連接池最大數(shù)量 -->    <property name="maxActive" value="${maxActive}"></property>    <!-- 連接池最大空閑 -->    <property name="maxIdle" value="${maxIdle}"></property>    <!-- 連接池最小空閑 -->    <property name="minIdle" value="${minIdle}"></property>    <!-- 獲取連接最大等待時(shí)間 -->    <property name="maxWait" value="${maxWait}"></property>  </bean>  <bean id="dataSource1" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">    <property name="url" value="${jdbc.url1}" />    <property name="username" value="${jdbc.username1}" />    <property name="password" value="${jdbc.password1}" />    <property name="driverClassName" value="${jdbc.driver1}" />    <!-- 初始化連接大小 -->    <property name="initialSize" value="${initialSize1}"/>    <!-- 最小空閑 -->    <property name="minIdle" value="${minIdle1}" />    <!-- 最大連接池?cái)?shù)量 -->    <property name="maxActive" value="${maxActive1}" />    <!-- 獲取連接最大等待時(shí)間 -->    <property name="maxWait" value="${maxWait1}"/>    <!-- 監(jiān)控統(tǒng)計(jì)用的filter:stat  日志用的filter:log4j 防御sql注入的filter:wall -->    <property name="filters" value="${filters1}" />    <!-- 配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒 -->    <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis1}" />    <!-- 配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒 -->    <property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis1}" />    <!-- 建議配置為true,不影響性能,并且保證安全性。 申請(qǐng)連接的時(shí)候檢測(cè) -->    <property name="testWhileIdle" value="${testWhileIdle1}"/>    <!-- 申請(qǐng)連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效,做了這個(gè)配置會(huì)降低性能。 -->    <property name="testOnBorrow" value="${testOnBorrow1}"/>    <!-- 歸還連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效,做了這個(gè)配置會(huì)降低性能 -->    <property name="testOnReturn" value="false" />    <!-- 是否緩存preparedStatement,也就是PSCache 適用支持游標(biāo)的數(shù)據(jù)庫(kù) 如Oracle -->    <property name="poolPreparedStatements" value="${poolPreparedStatements1}"/>    <!-- 要啟用PSCache,必須配置大于0,當(dāng)大于0時(shí) poolPreparedStatements自動(dòng)觸發(fā)修改為true。 -->    <property name="maxOpenPreparedStatements" value="${maxOpenPreparedStatements1}"/>    <!-- 定義監(jiān)控日志輸出間隔 -->    <property name="timeBetweenLogStatsMillis" value="60000"/>    <!--<property name="statLogger" ref ="statLoggerb"/> -->    <!-- 若需要mybatis的批量sql需配置   不配置則報(bào)錯(cuò):nested exception is java.sql.SQLException: sql injection violation, multi-statement not allow-->    <property name="proxyFilters" ref="wall-filter"/>  </bean>  <!-- 若需要mybatis的批量sql需配置 -->  <bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter">     <property name="config" ref="wall-config" />   </bean>   <bean id="wall-config" class="com.alibaba.druid.wall.WallConfig">     <property name="multiStatementAllow" value="true" />   </bean>   <!-- 多數(shù)據(jù)源配置 -->  <bean id="multipleDataSource" class="com.ys.dbConfig.MultipleDataSource">    <!-- 默認(rèn)數(shù)據(jù)源 -->    <property name="defaultTargetDataSource" ref="dataSource" />    <property name="targetDataSources">      <map key-type="java.lang.String">        <entry key="dataSource" value-ref="dataSource"/>        <entry key="dataSource1" value-ref="dataSource1"/>      </map>    </property>  </bean>  <!-- 配置 sqlSessionFactory -->  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">    <!-- 數(shù)據(jù)庫(kù)連接池 -->    <property name="dataSource" ref="multipleDataSource"/>    <property name="configLocation" value="classpath:mybatis.cfg.xml"/>    <!-- 加載Mybatis全局配置文件 -->    <property name="mapperLocations" value="classpath:com/ys/mapper/*.xml"/>  </bean>  <!-- 掃描的dao包(映射文件) 本身應(yīng)該在mybatis里 現(xiàn)在交給spring -->  <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">    <property name="basePackage" value="com.ys.dao"/>  </bean><!-- 事務(wù)配置 -->    <!-- 配置事務(wù)管理 -->  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">    <property name="dataSource" ref="multipleDataSource"></property>  </bean>  <!-- 開啟注解事務(wù) 引用transactionManager -->  <tx:annotation-driven transaction-manager="transactionManager"/></beans>

創(chuàng)建MultipleDataSource.java

package com.ys.dbConfig;import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;public class MultipleDataSource extends AbstractRoutingDataSource{  @Override  protected Object determineCurrentLookupKey() {    return MultipleDataSourceHandler.getRouteKey();  }}

創(chuàng)建MultipleDataSourceHandler.java

package com.ys.dbConfig; /** *@ Title MultipleDataSourceHandler.java *@ description: 多數(shù)據(jù)源Handler*@ time 創(chuàng)建時(shí)間:2018年8月25日 上午10:52:12 **/public class MultipleDataSourceHandler {  private static ThreadLocal<String> routeKey = new ThreadLocal<String>();  /**   * @Title: getRouteKey    * @Description: 獲取當(dāng)前線程的數(shù)據(jù)源路由的key   * @param @return   * @return String   * @date createTime:2018年8月27日上午10:34:52   */  public static String getRouteKey(){    return routeKey.get();  }  /**   * @Title: setRouteKey    * @Description: 綁定當(dāng)前線程數(shù)據(jù)源路由的key 使用完成后必須調(diào)用removeRouteKey()方法刪除   * @param @param key   * @return void   * @date createTime:2018年8月27日上午10:35:03   */  public static void setRouteKey(String key){    routeKey.set(key);  }  /**   * @Title: removeRouteKey    * @Description: 刪除與當(dāng)前線程綁定的數(shù)據(jù)源路由的key   * @return void   * @date createTime:2018年8月27日上午10:35:31   */  public static void removeRouteKey(){    routeKey.remove();  }}

切換數(shù)據(jù)源

MultipleDataSourceHandler.setRouteKey(“dataSource1”);

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
欧洲精品久久久| 中文字幕欧美激情| 欧美一区=区三区| 91看片淫黄大片一级在线观看| 牛人国产偷窥女洗浴在线观看| 欧美色图在线播放| 色先锋资源久久综合5566| 成人午夜免费在线| a一区二区三区亚洲| 蜜桃av噜噜一区二区三区| 亚洲成人av中文字幕| 国产一区二区三区站长工具| 久久国产黄色片| 男人的天堂久久久| 亚洲国产女人aaa毛片在线| 日本人添下边视频免费| 日韩亚洲欧美在线观看| 久久精品国产亚洲AV熟女| 欧美日本黄色片| 悠悠资源av网址| 天天舔天天干天天操| 成人精品一二区| 成人乱码一区二区三区av| 日本一区二区三区在线视频| 麻豆久久精品| 中文字幕超清在线免费观看| 欧美日本在线看| 欧美日韩成人黄色| 欧美亚洲高清一区| 亚洲精品国产精品乱码不99| 黑人巨大国产9丨视频| 日本国产欧美| 天天揉久久久久亚洲精品| 日韩网址在线观看| 在线精品国产亚洲| 日韩av理论片| 全黄性性激高免费视频| 国产精品对白一区二区三区| 日韩国产欧美在线播放| 一区二区三区中文字幕在线观看| 久久久久国产精品麻豆ai换脸| 伊人久久久久久久久久久| 国产精品日韩一区二区免费视频| 日韩一区二区三区精品| 亚洲免费在线看| 久久久久久久麻豆| 欧美激情一区二区三级高清视频| 日韩欧美一区三区| 欧美日韩伦理片| 一区二区免费在线| 500福利第一精品导航| 大胆人体一区| 日本黄色www| 91久久人澡人人添人人爽欧美| 麻豆国产尤物av尤物在线观看| 999久久久国产999久久久| 日韩手机在线视频| 欧美va亚洲va国产综合| av在线免费在线观看| 国产精品久久久久久人| 欧洲一区二区av| 亚洲一区二区精品在线观看| 性色av一区二区三区免费| 一区2区3区在线看| 亚洲欧美日本国产专区一区| 九九色在线视频| 国产福利小视频在线观看| 成人h动漫精品一区二区| 一本色道久久亚洲综合精品蜜桃| 香蕉久久一区二区不卡无毒影院| 二个人看的毛片| 中文字幕日本人妻久久久免费| 午夜精品视频一区二区三区在线看| 92精品国产成人观看免费| 5566中文字幕一区二区电影| 青娱乐在线视频免费观看| 美女视频黄免费| 日韩中文字幕欧美| 九色一区二区| 精品久久不卡| 性网站在线免费观看| 色婷婷粉嫩av| 91精品91久久久久久| 亚洲天堂av图片| 99热99re6国产在线播放| 午夜av在线播放| 午夜久久美女| 鬼打鬼之黄金道士1992林正英| 人人精品人人爱| 国产精品久久久久久久久毛片| 正在播放亚洲| 精品久久成人| 日韩精品三级| 日韩午夜在线观看视频| 成年人午夜免费视频| 精品久久一区二区三区蜜桃| 99精品在免费线偷拍| 日日骚一区二区三区| 黄色欧美网站| 好吊色欧美一区二区三区视频| 综合一区二区三区| 久久久精品人妻一区二区三区| 一个色综合网站| 老熟妻内射精品一区| 日韩欧美福利视频| 久久精品国产www456c0m| 国产一区二区三区三州| 国产精品视频第一区二区三区| 网站永久看片免费| 伊人一区二区三区久久精品| 东方伊人免费在线观看| 麻豆精品国产91久久久久久| **女人18毛片一区二区| 在线播放免费| 精东传媒在线观看| 国产精品一区电影| 高清国产mv在线观看| 欧美制服丝袜第一页| 亚洲一区二区免费视频| 国产一区二区三区四区五区在线| 国产极品美女高潮无套久久久| 亚洲色欲综合一区二区三区| 色婷婷av一区二区三区之e本道| 88国产精品欧美一区二区三区| 先锋影音av中文资源| xxxxxx国产精品视频| 久久这里只有精品视频网| 天堂在线免费av| 一级黄色片在线免费观看| 日本一区高清不卡| 国产激情在线观看| 国产真实生活伦对白| 动漫av一区| 国产69精品久久久久9999apgf| 亚洲一区二区在线视频观看| 欧美午夜精品久久久久久人妖| 免费观看黄色大片| 欧美四级电影网| 蜜桃精品成人影片| 欧美日本在线视频| 成人看片黄a免费看在线| 亚洲性生活视频| 爱豆国产剧免费观看大全剧苏畅| 伊人网在线综合| 黄色av免费播放| 国产精品色眯眯| 青青青在线免费观看| 污污的网站在线观看| 男男gay无套免费视频欧美| 国产人成一区二区三区影院| 国产91精品最新在线播放| 欧美大胆在线视频| 日韩经典中文字幕在线观看| 成人午夜伦理影院| 国产精品suv一区二区三区| 精品国产乱码久久久久久久软件| 成人午夜网址| 欧美精品一二三区| 天堂日韩电影| 欧美精品第1页| 成人激情黄色小说| 日韩av激情| 黄色在线看片| 亚洲另类图片色| 精品一区二区三| 一区二区三区四区在线免费视频| 精品欧美一区二区在线观看| 麻豆精品一区| 香蕉av一区二区三区| 国产女人免费看a级丨片| 国产精品v一区二区三区| 摸摸摸bbb毛毛毛片| 最新的欧美黄色| 亚洲最大色图| 91香蕉国产在线观看| 狠狠搞狠狠干| 亚洲成人高清| 99热这里只有精品4| 亚洲国产精品一区二区www| brazzers欧美最新版视频| 亚洲一区导航| 亚洲影院一区二区三区| 99精品视频在线观看免费| 日韩av成人| 一区中文字幕| 亚洲精品国产品国语在线app| 国产精品初高中精品久久| 国产一区二区三区四区在线| 日本久久一区二区| 国产香蕉97碰碰久久人人| 欧美成人一二三| 亚洲三级电影在线观看| 久久久高清视频| 国产三级伦理在线| 欧美性性性性性ⅹxxbbbb| 日韩免费不卡视频| 精品中文字幕在线播放| 91久久国产视频| 性色av蜜臀av色欲av| 一本色道久久88精品综合| 成人免费观看在线视频| 91国产成人在线| 在线观看国产精品入口男同| 久久视频免费在线观看| 成人免费视频一区| 日韩精品电影一区二区三区| 波波电影院一区二区三区| 日韩免费成人网| 今天的高清视频免费播放成人| 欧美96在线丨欧| 久久色精品视频| 超碰人人cao| 欧美在线视频一区二区| 日本成年免费网站| 国产精品色噜噜| 国产精品扒开腿爽爽爽视频| 一区在线视频| 日韩一级片网址| 最近中文字幕在线视频| 在线观看国产一区二区三区| 999久久久精品视频| 欧美在线视频网站| 国产一区三区在线播放| 9l视频自拍九色9l视频成人| av免费看网址| 久久99热精品| 亚洲av少妇一区二区在线观看| 免费国产在线精品一区二区三区| 91精品网站| 亚洲最色的网站| 中文字幕字幕中文在线中不卡视频| 日本中文字幕在线| 国内视频精品| 超碰中文字幕在线观看| xxxx黄色| 天天综合五月天| 国产一区二区在线播放视频| 国产福利一区二区三区在线观看| 国产精品高颜值在线观看| 波多野结衣激情视频| 国产精品久久久久久影视| 特级西西人体高清大胆| 国产成人午夜片在线观看高清观看| 男女性高潮免费网站| 蜜桃999成人看片在线观看| 另类人妖一区二区av| av影片在线播放| 国产成人精品视频一区| 免费一区二区三区四区| 在线看片一区| 欧美成人乱码一区二区三区| 亚洲欧美在线第一页| 青青青青在线视频| 国产youjizz在线| 全彩无遮挡全彩口工漫画h#| 日韩在线第三页| 日本免费高清不卡| 漂亮人妻被中出中文字幕| 色婷婷av一区二区三区丝袜美腿| 黄色激情在线播放| 日本三级免费看| 亚洲成人一区二区在线观看| 98精品久久久久久久| 99国产精品久久久久久久久久| 里番在线播放| 大胆人体一区二区| 国产毛片av在线| 亚洲国产精品免费在线观看| 97国产一区二区精品久久呦| 国产欧美久久一区二区三区| 欧美极品中文字幕| 成人av蜜桃| 日产欧产美韩系列久久99| 成人软件网18免费视频| 国产午夜精品一区二区三区嫩草| 精品国产乱码久久久久久鸭王1| 奇米色一区二区三区四区| 久久在线免费视频| 在线观看日韩国产| www999久久| 国产日韩欧美一区二区| 日韩激情中文字幕| 91在线视频免费播放| 亚洲最大激情网| 每日更新在线观看av| 国产精品无码一区二区三区免费| 久久久精品免费网站| 日本在线人成| 国产999精品久久久久久绿帽| 一二三四在线观看免费高清中文在线观看| 欧美欧美天天天天操| 国产又黄又猛视频| 丰满少妇被猛烈进入高清播放| 91夜夜揉人人捏人人添红杏| 色综久久综合桃花网| 在线观看网站黄不卡| 久久久久久久免费视频了| 亚洲一区亚洲| 亚洲国产二区| 首播影院在线观看免费观看电视| 人妻少妇被粗大爽9797pw| 美女被到爽高潮视频| 日韩精品――中文字幕| 四虎成人在线观看| 亚洲蜜桃av| 黄色网址免费在线| 天堂在线观看| 欧美激情一区二区三区| 欧美激情精品久久久久久黑人| 欧美一区影院| 一区免费在线| 亚洲经典中文字幕| 亚洲男女毛片无遮挡| 国内精品伊人久久久久av一坑| 狠狠入ady亚洲精品经典电影| 日韩在线电影| 好吊色欧美一区二区三区四区| 国产盗摄一区二区| 这里只有精品66| 800av在线免费观看| 国产一级在线播放| 日韩免费特黄一二三区| 国产亚洲精品久久久久久牛牛| 97超级在线观看免费高清完整版电视剧| 92看片淫黄大片欧美看国产片| 国产日韩欧美综合精品| 亚洲人成伊人成综合网久久久| 六月婷婷激情综合|