SpringBoot配置多個mysql資料來源

2021-10-10 08:52:53 字數 1921 閱讀 3840

當我們在進行資料庫分庫分表操作是可能會需要到多個資料庫,那麼我們就需要對多個資料庫的資料來源進行配置.

整理一下,今天在springboot框架下多個資料來源的配置過程(兩個為例):

1.配置資料庫資訊:在yml配置檔案中配置需要的資料庫資訊

spring:

datasource_1:

# 配置第乙個資料庫的位址資訊

url: jdbc:mysql:

username: root

password: root

# 設定資料來源

type: com.alibaba.druid.pool.druiddatasource

datasource_2:

# 配置第乙個資料庫的位址資訊

url: jdbc:mysql:

username: root

password: root

type: com.alibaba.druid.pool.druiddatasource

2.因為我們可能需要在不同的情況使用不同的資料來源,所以需要在主啟動類下忽略自動配置的資料來源

3.配置資料來源資訊 , 將資料來源注入到spring容器中

@configuration

public class dynamicdatasourceconfig ")

private string url1;

@value("$")

private string url2;

@value("$")

private string username;

@value("$")

private string password;

/*** 配置資料來源1

** @return

*/@bean

public datasource datasource1()

/*** 配置資料來源2

** @return

*/@bean

public datasource datasource2()

/*** 設定預設資料來源

** @return datasource

*/@bean

public datasource dynamicdatasource(datasource datasource1, datasource datasource2)

/*** 配置 mybatissqlsessionfactorybean

* @param dynamicdatasource

* @return

*/@bean

public mybatissqlsessionfactorybean sqlsessionfactorybean(datasource dynamicdatasource) catch (ioexception e)

return mybatissqlsessionfactorybean;

}}

4.封裝乙個threadlocal

public class threadlocaldatasource 

public static string get()

}

5.建立類繼承abstractroutingdatasource,在重寫的方法裡面設定資料來源

public class dynamicdatasource extends abstractroutingdatasource 

}

通過五個步驟就配置好了多個資料來源 。

在使用的時候只需要通過指定的分庫分表的規則將用到的資料來源的名稱(就是在第三步的map對應的key)傳到呼叫封裝的threadlocaldatasource類中的set方法中即可。

配置資料來源就到這了 (如有遺漏請指正,謝謝)。

Spring Boot配置多個DataSource

廖雪峰 程式設計 1 13 10 11 閱讀 14041 使用spring boot時,預設情況下,配置datasource非常容易。spring boot會自動為我們配置好乙個datasource。org.hsqldbgroupid hsqldbartifactid runtimescope de...

springboot 多個redis配置

configurationproperties 註解會把配置檔案裡spring.redis開頭的屬性,賦值給bean裡對應的物件.configuration conditionalonproperty import public class redisconfig bean configuratio...

SpringBoot配置多個Redis資料來源

一.新增依賴 org.springframework.boot spring boot starter data redis redis.clients jedis spring redis onedb host port 6379 password database 10 timeout 5000...