SpringBoot實現多資料來源配置

2021-08-11 17:14:16 字數 3282 閱讀 8009

spring.datasource

.primary

.url=jdbc:mysql://localhost:3306/test1

spring.datasource

.primary

.username=root

spring.datasource

.primary

.password=root

spring.datasource

.primary

.driver-class-name=com

.mysql

.jdbc

.driver

spring.datasource

.secondary

.url=jdbc:mysql://localhost:3306/test2

spring.datasource

.secondary

.username=root

spring.datasource

.secondary

.password=root

spring.datasource

.secondary

.driver-class-name=com

.mysql

.jdbc

.driver

@configuration

public

class

datasourceconfig

@bean(name = "secondarydatasource")

@qualifier("secondarydatasource")

@configurationproperties(prefix="spring.datasource.secondary")

public datasource secondarydatasource()

}

在springboot中對jdbctemplate的支援比較簡單,只需要為其注入對應的datasource即可

@bean(name = "primaryjdbctemplate")

public jdbctemplate primaryjdbctemplate(

@qualifier("primarydatasource" datasource datasource)

@bean(name = "secondaryjdbctemplate")

public jdbctemplate secondaryjdbctemplate(

@qualifier("secondarydatasource" datasource datasource)

這樣配置便將不同的資料來源配置到不同的jdbctemplate中了,使用時運用@autowired註解搭配@qualifier即可

public

class

templateservice

jpa支援的多資料來源配置,對於datasource 的配置如上方jdbctemplate 所示相同,並且對每乙個jpa配置都要搭配乙個配置類,在類中需要注意書寫正確資料來源對應的entity實體類和repository

/**

*@author:高鍵城

*@time:

*@discription:jpa對資源的配置

*/@configuration

@enabletransactionmanagement

@enablejparepositories(

entitymanage***ctoryref = "entitymanage***ctoryprimary",

transactionmanagerref = "transactionmanagerprimary",

basepackages = //設定repository所在位置

)public

class

primaryconfig

@primary

@bean(name = "entitymanage***ctoryprimary")

public localcontainerentitymanage***ctorybean entitymanage***ctorybean(entitymanage***ctorybuilder builder)

private mapgetvendorproperties(datasource datasource)

@primary

@bean(name = "transactionmanagerprimary")

public platformtransactionmanager transactionmanagerprimary(entitymanage***ctorybuilder builder)

}

要注意的就是書寫正確實體類和repository的位置,按照上面的內容書寫號實體類管理器等內容。

配置第二個資料來源的時候,不同的就是datasource 注入的名稱,從primarydatasource 改為 secondarydatasource

接下來編寫實體類的資訊

/**

*實體類user

*/@entity

public

class

user

public

user(string name, integer age)

// 省略getter、setter

}

編寫對應的repository

@repository

public

inte***ce

userrepository

extends

jparepository

最後我們用junit來進行測試

@runwith(springjunit4classrunner.class)

public

class

@autowired

private userrepository userrepository;

@autowired

private messagerepository messagerepository;

@test

public

void

test() throws exception

}

輕鬆實現SpringBoot實現多資料來源與事物處理

歡迎進入我的部落格,樂於分享是一種美德 首先啟動類所在的包一定要放在其他的類的父包中,這樣容易讓啟動類掃瞄到其他的類,不需要多餘的配置了 事物管理 事物原理 事物分類 單事物處理 單資料來源 同乙個專案 連線乙個資料庫 直接在需要加註解的方法 上面加上乙個註解 transactional 類 ind...

springboot中實現多資料來源

基於aop動態的切換的資料來源 3.1 原理介紹3.2 示例 a 配置檔案spring.aop.proxy target class true spring.aop.auto true spring.datasource.druid.db1.url spring.datasource.druid.d...

Spring Boot多資料來源配置

方案實現 新建兩個配置類 即加 configuration註解的類 乙個為primarydatasourceconfig,用來配置本專案的資料來源 另乙個叫seconddatasourceconfig,用來配置需要同步的資料來源。如下 configuration public class prima...