1. 程式人生 > >Spring, MyBatis 多資料來源的配置和管理

Spring, MyBatis 多資料來源的配置和管理

原文連結:http://www.2cto.com/kf/201505/400273.html

同一個專案有時會涉及到多個數據庫,也就是多資料來源。多資料來源又可以分為兩種情況:

1)兩個或多個數據庫沒有相關性,各自獨立,其實這種可以作為兩個專案來開發。比如在遊戲開發中一個數據庫是平臺數據庫,其它還有平臺下的遊戲對應的資料庫; 2)兩個或多個數據庫是master-slave的關係,比如有mysql搭建一個 master-master,其後又帶有多個slave;或者採用MHA搭建的master-slave複製; 目前我所知道的 Spring 多資料來源的搭建大概有兩種方式,可以根據多資料來源的情況進行選擇。 1. 採用spring配置檔案直接配置多個數據源

比如針對兩個資料庫沒有相關性的情況,可以採用直接在spring的配置檔案中配置多個數據源,然後分別進行事務的配置,如下所示:

  1. <context:component-scanbase-package="net.aazj.service,net.aazj.aop"/>
  2. <context:component-scanbase-package="net.aazj.aop"/>
  3. <!-- 引入屬性檔案 -->
  4. <context:property-placeholderlocation="classpath:config/db.properties"/>
  5. <!-- 配置資料來源 -->
  6. <beanname="dataSource"class
    ="com.alibaba.druid.pool.DruidDataSource"init-method="init"destroy-method="close">
  7.     <propertyname="url"value="${jdbc_url}"/>
  8.     <propertyname="username"value="${jdbc_username}"/>
  9.     <propertyname="password"value="${jdbc_password}"/>
  10.     <!-- 初始化連線大小 -->
  11.     <property
    name="initialSize"value="0"/>
  12.     <!-- 連線池最大使用連線數量 -->
  13.     <propertyname="maxActive"value="20"/>
  14.     <!-- 連線池最大空閒 -->
  15.     <propertyname="maxIdle"value="20"/>
  16.     <!-- 連線池最小空閒 -->
  17.     <propertyname="minIdle"value="0"/>
  18.     <!-- 獲取連線最大等待時間 -->
  19.     <propertyname="maxWait"value="60000"/>
  20. </bean>
  21. <beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
  22.   <propertyname="dataSource"ref="dataSource"/>
  23.   <propertyname="configLocation"value="classpath:config/mybatis-config.xml"/>
  24.   <propertyname="mapperLocations"value="classpath*:config/mappers/**/*.xml"/>
  25. </bean>
  26. <!-- Transaction manager for a single JDBC DataSource -->
  27. <beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  28.     <propertyname="dataSource"ref="dataSource"/>
  29. </bean>
  30. <!-- 使用annotation定義事務 -->
  31. <tx:annotation-driventransaction-manager="transactionManager"/>
  32. <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">
  33.   <propertyname="basePackage"value="net.aazj.mapper"/>
  34.   <propertyname="sqlSessionFactoryBeanName"value="sqlSessionFactory"/>
  35. </bean>
  36. <!-- Enables the use of the @AspectJ style of Spring AOP -->
  37. <aop:aspectj-autoproxy/>
  38. <!-- ===============第二個資料來源的配置=============== -->
  39. <beanname="dataSource_2"class="com.alibaba.druid.pool.DruidDataSource"init-method="init"destroy-method="close">
  40.     <propertyname="url"value="${jdbc_url_2}"/>
  41.     <propertyname="username"value="${jdbc_username_2}"/>
  42.     <propertyname="password"value="${jdbc_password_2}"/>
  43.     <!-- 初始化連線大小 -->
  44.     <propertyname="initialSize"value="0"/>
  45.     <!-- 連線池最大使用連線數量 -->
  46.     <propertyname="maxActive"value="20"/>
  47.     <!-- 連線池最大空閒 -->
  48.     <propertyname="maxIdle"value="20"/>
  49.     <!-- 連線池最小空閒 -->
  50.     <propertyname="minIdle"value="0"/>
  51.     <!-- 獲取連線最大等待時間 -->
  52.     <propertyname="maxWait"value="60000"/>
  53. </bean>
  54. <

    相關推薦

    Spring+MyBatis資料來源配置實現(mysqlsqlserver資料庫)

    最近用到了MyBatis配置多資料來源,原以為簡單配置下就行了,實際操作後發現還是要費些事的,這裡記錄下,以作備忘 不多廢話,直接上程式碼,後面會有簡單的實現介紹 jdbc和log4j的配置 #定義輸出格式 ConversionPattern=%d %-5p [%t] %c - %m%n log4j.

    spring mybatis 資料來源配置

    1、建立好資料庫的配置檔案 mysql.url=jdbc:mysql://***/***?useUnicode=true&characterEncoding=UTF-8 mysql.username=*** mysql.password=*** mysql.driverClassName=co

    Spring+MyBatis資料來源配置實現

    最近用到了MyBatis配置多資料來源,原以為簡單配置下就行了,實際操作後發現還是要費些事的,這裡記錄下,以作備忘 不多廢話,直接上程式碼,後面會有簡單的實現介紹 jdbc和log4j的配置 #定義輸出格式 ConversionPattern=

    Spring+Mybatis資料來源配置(四)——AbstractRoutingDataSource實現資料來源動態切換

    有時候需要在程式中動態切換資料來源,那麼這個系列的之前的博文所闡述的方法就不再使用了,總不能通過程式更改config.properties檔案的dataSource的值,然後再重啟web伺服器以便載入applicationContext.xml檔案。這裡講訴的是如何利用Ab

    Spring, MyBatis 資料來源配置管理

    原文連結:http://www.2cto.com/kf/201505/400273.html 同一個專案有時會涉及到多個數據庫,也就是多資料來源。多資料來源又可以分為兩種情況: 1)兩個或多個數據庫沒有相關性,各自獨立,其實這種可以作為兩個專案來開

    Spring Boot + Mybatis 資料來源配置實現讀寫分離

    本文來自網易雲社群作者:王超應用場景:專案中有一些報表統計與查詢功能,對資料實時性要求不高,因此考慮對報表的統計與查詢去操作slave db,減少對master的壓力。根據網上多份資料測試發現總是使用master資料來源,無法切換到slave,經過多次除錯修改現已完美通過,現

    spring boot druid mybatis 資料來源配置

    1.application.properties spring.datasource.url = jdbc\:mysql\://192.168.1.1\:3306/business?autoRconnect\=true&useUnicode\=true&ch

    wordybear之STS下spring boot、mybatis資料來源配置完全攻略及原始碼工程

    // 2017.09.01 本文所依賴的開發環境早已更改為intellij idea,然而並不影響任何 本文面對初學者,在對基礎有些瞭解但又似懂非懂有些混亂的情況下(作者一般學習新技的最初狀態,此時需要冷靜)。 但是,仔細閱讀本文,將會在相同或相似的環境下實現sts下spr

    spring boot druid mybatis 資料來源 配置

    spring boot 在配置時做了很多簡化配置的設定,但是簡化的配置往往已犧牲一定的定製化,比如在資料來源的配置時,spring boot 只提供4種資料庫連線池的配置,其中並不支援常用的druid 閱讀spring boot DataSourceB

    springboot+mybatis資料來源配置,AOP註解動態切換資料來源

    轉載至:https://blog.csdn.net/xiaosheng_papa/article/details/80218006 親測有效。 注:有些系統中已經配置了單資料來源,現在要轉成多資料來源,可能需要額外的配置。拿我自己當前專案來說: 專案在啟動類中配置了單資料來源:

    基於SpirngBoot2.0+ 的 SpringBoot+Mybatis 資料來源配置

    Github 地址:github.com/Snailclimb/…(SpringBoot和其他常用技術的整合,可能是你遇到的講解最詳細的學習案例,力爭新手也能看懂並且能夠在看完之後獨立實踐。基於最新的 SpringBoot2.0+,是你學習SpringBoot 的最佳指南。) ,歡迎各位 Star。

    新手也能看懂,基於SpirngBoot2.0+ 的 SpringBoot+Mybatis 資料來源配置

    Github 地址:https://github.com/Snailclimb/springboot-integration-examples(SpringBoot和其他常用技術的整合,可能是你遇到的講解最詳細的學習案例,力爭新手也能看懂並且能夠在看完之後獨立實踐。基於最新的 S

    springboot+mybatis資料來源配置實現

    簡單實現了根據註解動態切換資料來源,支援同一個資料庫的宣告式事務,但不支援JTA事務。處理流程: 根據配置的資料來源資訊,建立動態資料來源bean 利用DataSourceAspect處理@DataSource註解,設定當前要使用的具體資料來源 pom.xm

    Spring實現資料來源配置

    一、前言        對於小型專案,伺服器與資料庫是可以在同一臺機子上的,但隨著業務的龐大與負責,資料庫和伺服器就會分離開來。同時隨著資料量的增大,資料庫也要分開部署到多臺機子上。 二、Spring配置檔案修改        在理論學習與實踐的差距:框架開源與不可

    Spring中bean的配置管理

    1 Spring中bean的配置 1.1 <bean>標籤的id和name區別 id        :使用了約束中的唯一約束。裡面不能出現特殊字元的。 name  :沒

    spring mvc 資料來源配置

    、首先配置兩個資料庫 <bean id="dataSourceA" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="

    Spring Boot資料來源配置(一)durid、mysql、jpa整合

    目前在做一個統計專案。需要多資料來源整合,其中包括mysql和mongo。本節先講mysql、durid、jpa與spring-boot的整合。 引入Durid包 <dependency> <groupId>com.a

    spring boot 資料來源配置

    我們在開發過程中可能需要用到多個數據源,我們有一個專案(MySQL)就是和別的專案(SQL Server)混合使用了。其中SQL Server是別的公司開發的,有些基本資料需要從他們平臺進行調取,那麼在專案中就需要支援多資料來源,不然就只能獲取到自己的資料來源的資料了。當

    springMVC+Mybatis資料來源配置

    每個MapperScannerConfigurer配置新增屬性節點 <property name="sqlSessionFactory" ref="SqlSessionFactory01"></property> ,ref引入相應的會話工廠bean。 <!--01

    spring+mybatis 資料來源切換失敗的可能原因。

    可能因為,加了事務。 //@Transactional(readOnly = false) // 需要事務操作必須加入此註解 就因為加了事務,導致了,問題的出現。 不然setCustomerType,也沒有出現應有的結果。 害得我把spring的框架都改寫了,不過由於