Spring Boot配置多個DataSource

2021-08-13 22:06:29 字數 2778 閱讀 5274

廖雪峰 / 程式設計 / 1-13 10:11 / 閱讀: 14041

使用spring boot時,預設情況下,配置datasource非常容易。spring boot會自動為我們配置好乙個datasource

org.hsqldbgroupid>

hsqldbartifactid>

runtimescope>

dependency>

但是,在某些情況下,如果我們需要配置多個資料來源,應該如何在spring boot中配置呢?

我們以jdbc為例,演示如何在spring boot中配置兩個datasource。對應的,我們會建立兩個jdbctemplate的bean,分別使用這兩個資料來源。

spring:

name: data-multidatasource

datasource:

driver-class-name: org

.hsqldb

.jdbc

.jdbcdriver

url: jdbc

:hsqldb

:mem

:db1

username: sa

password:

second-datasource:

driver-class-name: org

.hsqldb

.jdbc

.jdbcdriver

url: jdbc

:hsqldb

:mem

:db2

username: sa

password:

這兩個datasource都使用hsqldb,但是資料庫是不同的。此外,在使用多資料來源的時候,所有必要配置都不能省略。

其次,我們需要自己建立兩個datasource的bean,其中乙個標記為@primary,另乙個命名為seconddatasource

@configuration

public

class

someconfiguration

@bean(name = "seconddatasource")

@configurationproperties(prefix = "spring.second-datasource")

public datasource seconddatasource()

}

對於每乙個datasource,我們都必須通過@configurationproperties(prefix = "***")指定配置項的字首。

緊接著,我們建立兩個jdbctemplate的bean,其中乙個標記為@primary,另乙個命名為secondjdbctemplate,分別使用對應的datasource

@bean

@primary

public jdbctemplate primaryjdbctemplate(datasource datasource)

@bean(name = "secondjdbctemplate")

public jdbctemplate secondjdbctemplate(@qualifier("seconddatasource") datasource datasource)

注意到secondjdbctemplate在建立時,傳入的datasource必須用@qualifier("seconddatasource")宣告,這樣,才能使用第二個datasource

現在,我們就建立了兩個jdbctemplatebean。在需要使用第乙個jdbctemplate的地方,我們直接注入:

@component

public

class

someservice

在需要使用第二個jdbctemplate的地方,我們注入時需要用@qualifier("secondjdbctemplate")標識:

@component

public

class

anotherservice

這樣,我們就可以針對不同的資料來源,用不同的jdbctemplate進行操作。

當存在多個相同型別的bean,例如,多個datasource,多個jdbctemplate時,強烈建議總是使用@primary把其中某乙個bean標識為「主要的」,使用@autowired注入時會首先使用被標記為@primary的bean。

相同型別的其他bean,每乙個都需要用@bean(name="***")標識名字,並且,在使用@autowired注入時配合@qualifier("***")指定注入的bean的名字。

完整的示例工程原始碼請參考:

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...

SpringBoot配置多個mysql資料來源

當我們在進行資料庫分庫分表操作是可能會需要到多個資料庫,那麼我們就需要對多個資料庫的資料來源進行配置.整理一下,今天在springboot框架下多個資料來源的配置過程 兩個為例 1.配置資料庫資訊 在yml配置檔案中配置需要的資料庫資訊 spring datasource 1 配置第乙個資料庫的位址...