廖雪峰 / 程式設計 / 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
。
現在,我們就建立了兩個jdbctemplate
的bean
。在需要使用第乙個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 配置第乙個資料庫的位址...