多個資料來源的輕鬆支援

2022-09-15 23:33:21 字數 1874 閱讀 7803

前面文章裡介紹了 自定義註解完成資料庫切庫 ,今天接著這個高併發的話題,繼續說一下專案裡多個資料來源的支援。

如何理解支援多個資料來源呢?簡單的說,就是乙個專案裡,同時可以訪問多個不同的資料庫。

場景假設:專案底層有正常業務庫和日誌庫,希望解決的是將專案中的一些日誌單獨記錄到乙個庫里,比如使用者操作記錄、產品更新記錄等。

說一下為什麼會有這個需求:使用者操作記錄和產品更新記錄可能很多,而實際中使用的又很少,就只是在某些頁面單獨展示一下操作或更新記錄,絕大部分時間都在不停的做著插入操作,這時就可以把這種記錄放到業務核心庫外面。

自己還遇到乙個場景,就是底層產品、訂單什麼的是存在不同的庫里的,但是**重構還沒做到產品相關的乙個專案、訂單相關的乙個專案這一步,這時候也可以考慮在乙個專案裡同時支援多個資料來源,訂單相關的類操作訂單庫,產品相關的類操作產品庫,前期做好配置就可以了,盡量別去跨庫join表,基本什麼都不影響。

不多說了,**走起來 : (依舊使用springboot進行實現)

第一步、定義多個資料來源的mybatis配置

## datasource master #

spring.datasource.type=com.alibaba.druid.pool.druiddatasource

spring.datasource.driver-class-name=com.mysql.jdbc.driver

spring.datasource.url=jdbc:mysql://localhost:3306/test1?characterencoding=utf-8

spring.datasource.username=root

spring.datasource.password=466420182

## datasource log #

spring.datasourcelog.type=com.alibaba.druid.pool.druiddatasource

spring.datasourcelog.driver-class-name=com.mysql.jdbc.driver

spring.datasourcelog.url=jdbc:mysql://localhost:3306/log?characterencoding=utf-8

spring.datasourcelog.username=root

spring.datasourcelog.password=466420182

第二步、定義多個資料來源

@configuration

public class datasourceconfig

@bean(destroymethod = "close", name = datasources.log_db)

@configurationproperties(prefix = "spring.datasourcelog")

public datasource datasourcelog()

}

第三步、分別配置多個資料來源

@configuration

public class mybatisconfig

}

@configuration

public class mybatislogconfig

}

這裡需要注意兩個資料來源配置的差別,也是支援多資料來源的關鍵

1)configuration 掃瞄不同的字首,取不同包下的sql對應的xml檔案

2)sqlsessionfactorybean 例項化時,預設的額外新增了 @primary註解

4)不同的資料來源使用不同的sqlsessionfactorybean例項

多資料來源支援是不是特別簡單,趕緊在你的專案裡用起來吧

web專案使用多個資料來源

今天接到任務,是以前用ssh開發的一套許可權系統,現在我們要做新的應用,並且以後我們的開發都基於這個許可權進行開發。以前都是不斷的往這個許可權裡面加應用,現在反過來,要降低耦合。現在我的應用系統也是ssh,給這個應用加入許可權使得這個應用可以單獨工作,別且許可權系統也可以單獨工作。在這個應用唯一用到...

web專案中配置多個資料來源

spring mybatis 多資料來源配置有兩種解決方案 1 配置多個不同的資料來源,使用乙個sessionfactory,在業務邏輯使用的時候自動切換到不同的資料來源,有乙個種是在 裡面根據不同的業務現切換到不同的datasource 有的會在業務層根據業務來自動切換。2 在spring專案中配...

Logstash配置多張表和多個資料來源

配置多個資料來源和不同的表訪問多個配置 解決問題 資料已經匯入完成 logstash還一直迴圈匯入資料 定時器設定時間有點短 同步資料兩種方案 方案一 每一次同步都是從頭同步的 1.clean run true就好了 2.schedule 根據你的業務需求看定多長時間比較合適 要是想使用每分鐘執行一...