前言:
demo的包結構
一、專案配置相關。
1.1 pom.xml 省略, spring-boot 版本1.4.3
#資料來源配置一(兼預設資料來源)
spring.datasource.test1.url=jdbc:mysql://localhost:3306/test1?useunicode=true&characterencoding=utf-8&usessl=false
spring.datasource.test1.username=root
spring.datasource.test1.password=123456
spring.datasource.test1.driver-class-name=com.mysql.jdbc.driver
#資料來源配置二
spring.datasource.test2.url=jdbc:mysql://localhost:3306/test2?useunicode=true&characterencoding=utf-8&usessl=false
spring.datasource.test2.username=root
spring.datasource.test2.password=123456
spring.datasource.test2.driver-class-name=com.mysql.jdbc.driver
二、動態資料來源相關類.2.1 dbenum : (用來包裝字串的用處!)
public enum dbenum
public string getvalue()
}
2.2:dynamicdatasource(提供資料來源的類,覆蓋方法是返回在自身資料來源map中查詢的字串-->由執行緒繫結變數提供)
/**
* 提供動態資料來源的類
*/public class dynamicdatasource extends abstractroutingdatasource
}
2.3 dbcontextholder (用threadlocal變數儲存查詢資料來源的字串)
/**
* 資料來源的id繫結當前執行緒
*/public class dbcontextholder
/*** 取得當前資料來源(資料來源字串名稱)
*/public static string getdbtype()
/*** 清除上下文資料來源
*/public static void cleardbtype()
}
2.4 dbconfig (將普通的資料來源配置到我們的動態資料來源,將此動態資料來源整合到上層其他配置中,比如注入到sqlsessionfactory,transcationmanager等,但是實際上我這裡只加了乙個@primary就可以利用預設的配置了。)
@configuration
public class dbconfig
@bean(name = "test2datasource")
@configurationproperties(prefix = "spring.datasource.test2")
public datasource test2datasource()
/*** 動態資料來源
* @return
*/@bean(name = "dynamicdatasource")
@primary /**設定成primary時,注入時如果是按型別注入的話,會優先!而實際上[自動的配置]裡面就是按datasource型別注入的*/
public datasource datasource() }/*
* 原來用xml配置動態資料來源的形式
*/
@insert("insert into user (id,name) values (#,#) ")
public void insert(@param("id")integer id ,@param("name")string name);
@select("select * from user")
@resulttype(user.class)
public listselectlist();
@update("update user set name = # where id = #")
public void updatebykey(user user);
@delete("delete from user where id = #")
public void deletebyid(integer id);}
@runwith(springjunit4classrunner.class)
@autowired
@test
public void test1()
}
spring boot系列之動態資料來源
動態資料來源配置檔案 spring datasource type com.alibaba.druid.pool.druiddatasource druid資料庫連線池 driverclassname com.mysql.jdbc.driver druid first url jdbc mysql ...
springboot 多資料來源動態切換
1.取消單資料來源預設配置 datasourceautoconfiguration.class public static void main string args 2.切換資料來源 aspect component lazy false order 0 order設定aop執行順序 使之在資料庫...
springboot 動態多資料來源配置
1.鋪墊 儲存及獲取資料源 dynamicdatasourcecontextholder 這個類,起到承上啟下的作用,後邊aop切換時,會首先setdatasourcetype,在使用時進行getgetdatasourcetype,同時掃瞄環境時,下面的dynamicdatasourceregist...