SpringBoot中的雙資料來源切換

2021-09-23 23:37:48 字數 3431 閱讀 3315

在我們的專案中涉及到oracle,mysql資料庫切換;

資料放在了oracle上,而配置和許可權管理放在了mysql上;所以經常要在兩者之間切換。

資料來源切換總共有三種方法:

1  在任何地方切換。

例如我們的專案:dbcontext.changedb(dbname.ims.getkey())  //切換oracle

dbcontext.changedb(dbname.dbvs.getkey())                          //切換mysql

2  在方法上加註解。

例如:@dbaspect("dbvs")  //切換mysql

@dbaspect("ims")  //切換oracle

接下來我們主要將第一種:在任何地方切換(我們專案**無法拷貝,純手敲)

類dbcontext

public class dbcontext )

@enabletransactionmanagement

@enableasync

public class contextconfig {

@configurationproperties(prefix = "spring.datasource.druid.dbvs")

@bean("dbvs.mysql")

@qualifier("dbvs.mysql")'

public datasource mysqldatasource()  throws exception{

druiddatasource datasource = druiddatasourcebuilder.create().build();

datasource.setusername(username);//username,password 配置在核心配置檔案中

datasource.setpassword(password);

return datasource;

@configurationproperties(prefix = "spring.datasource.druid.ims")

@bean("ims.oracle")

@qualifier("ims.oracle")'

public datasource oracledatasource()  throws exception{

druiddatasource datasource = druiddatasourcebuilder.create().build();

datasource.setusername(username);//username,password 配置在核心配置檔案中

datasource.setpassword(password);

return datasource;

@bean("dynamicdatasource")

@qualifier("dynamicdatasource")

@primary

public datasource dynamicdatasource() throws exception{

dynamicdatasource datasource = new dynamicdatasource();

hashmaptargetdatasource = new hashmap<>();

targetdatasource.put(dbname.dbvs.getkey(),mysqldatasource());

targetdatasource.put(dbname.ims.getkey(),oracledatasource());

datasource.settargetdatasources(targetdatasource);

datasource.setdefaulttargetdatasource(targetdatasource.get(dbname.dbvs.getkey()));

return datasource;

datasource的***

總***類

@springbootconfiguration

public class interceptorconfig implements webmvconfigurer {

//***配置,與業務相關,有著強烈的前後依賴順序

//其他***在datasourceinterceptor之前新增

public void addinterceptors(interceptorregistry registry){

webmvcconfigurer.super.addinterceptors(registry);

// registry.addinterceptor(其他***,例如:日誌,許可權);

registry.addinterceptor(datasourceinterceptor);

@bean("datasourceinterceptor")

public datasourceinterceptor datasourceinterceptor(){

datasourceinterceptor  interceptor = new datasourceinterceptor ();

return interceptor;

配置檔案

#-----------datasource-------mysql------------

spring.datasource.druid.dbvs.url=

spring.datasource.druid.dbvs.driver-class-name=

spring.datasource.druid.dbvs.username=

spring.datasource.druid.dbvs.password=

#-----------------datasource-------oracle-----

spring.datasource.druid.dbvs.url=

spring.datasource.druid.ims.driver-class-name=

spring.datasource.druid.ims.username=

spring.datasource.druid.ims.password=

vue中雙資料繫結原理以及實現

熟悉vue的小夥伴應該熟悉vue中的v model的使用方法,他的作用就是來實心雙資料繫結的,那麼先在來說明一下雙資料繫結的原理 它的底層原理是由object.defineproperty實現的 作用 給乙個物件新增或者修改屬性,返回乙個物件 引數 引數一 目標物件 引數二 需要修改或新增的屬性 引...

關於spring中的雙資料來源切換使用

本人菜鳥一枚,在最近的乙個任務中要求從乙個資料庫中篩選一些符合條件的錄入另乙個資料庫計畫是使用排程來完成,直接配置雙資料來源,在排程的時候呼叫另乙個資料來源篩選得到該資料庫中的資料,然後儲存到另乙個資料庫中。但是又有小題大做的感覺,因為我的排程一天或則更久才會使用一次。這樣的話另外乙個資料來源就一直...

Spring雙資料庫配置

有時候我們可能在乙個專案中使用兩個資料庫,為了實現使用兩個或多個資料庫的功能,我們需要在spring中配置相關資訊。首先是新增配置檔案conf.properties www.cppcns.com.config.propertyplaceholderconfigurer classpath confi...