日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2 数据源配置_如何在程序运行中动态切换数据源?架构师必读秘笈

發布時間:2024/9/27 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2 数据源配置_如何在程序运行中动态切换数据源?架构师必读秘笈 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說起動態數據源,大家應該也不陌生。例如在讀寫分離系統中,則要對請求中的讀寫操作進行分離,讓讀和寫落在不同的數據庫上;例如在多租戶系統中,則要根據請求來源租戶的不同,讓其落在不同租戶的數據庫上;例如在分庫應用中,也要根據不同的規則讓請求落在不同的數據庫上。于是,我們的應用要根據請求的不同,操作不同的數據庫,這時就需要動態數據源的幫助。

DynamicDataSource就是一個出色的動態數據源,他能讓你在程序運行過程中動態增刪和切換數據源。而且,它十分易用。使用它在一個請求中查詢多個數據源變得無比簡單。

1 特點

DynamicDataSource具有以下特點:

  • 小巧:只實現最基本的數據源增刪、切換功能,不涉及相關業務。
  • 易用:只需要簡單的配置和幾個方法的調用便可以完成所有功能。
  • 兼容:增加數據源時,數據源信息可以來自配置文件、前端界面輸入、數據庫查詢等各種方式。
  • 無侵入:切換數據源操作可以由切面觸發、邏輯觸發、注解觸發等,均可以供開發者自由實現。

DynamicDataSource中常用的方法有:

  • boolean addDataSource(DataSourceInfo dataSourceInfo, Boolean overwrite):增加一個數據源,overwrite用來決定如果已經存在同名數據源時是否要覆蓋
  • boolean addAndSwitchDataSource(DataSourceInfo dataSourceInfo, Boolean overwrite):增加一個數據源并切換到該數據源,overwrite用來決定如果已經存在同名數據源時是否要覆蓋
  • boolean switchDataSource(String dataSourceName):切換到指定名稱的數據源
  • boolean delDataSource(String dataSourceName):刪除一個數據源
  • void switchDefaultDataSource():切換到默認的數據源
  • DataSource getDefaultDataSource():獲取默認數據源

以上方法都是多線程安全的。你可以在切面、操作邏輯、注解中調用以上方法,完成數據源的動態增刪與切換。

2 快速上手

在demo文件夾下提供一個示例項目,供大家快速上手。以該demo項目為例,我們介紹DynamicDataSource的使用。

2.1 引入依賴包

在POM文件中引入DynamicDataSource的jar包。

2.2 基本配置

在application.properties文件中寫入默認的數據源信息,下面為示例??砂凑兆约旱臄祿催M行修改。

禁止Spring對DataSourceAutoConfiguration類的加載,否則該類會去加載固定的數據源。

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

增加對DynamicDataSource所在包的Bean的掃描。

@ComponentScan(basePackages = {"com.github.yeecode.dynamicdatasource","{other_package_root}"})

2.3 開始使用

至此,使用DynamicDataSource所需的全部配置就完成了。使用下面方式注入DynamicDataSource后便可以調用其中的數據源操作方法。

@Autowired private DynamicDataSource dynamicDataSource;

我們可以按照demosqlDDL.md文件所述建立兩個數據源,然后測試DynamicDataSource的工作情況。

啟動DynamicDataSourceDemo項目得到如下界面。

例如我們可以在一個接口內實現數據源的切換,從而在請求到達/接口時,先后查詢了兩個數據源中的數據,如代碼所示。

可以得到下圖所示的結果。下圖打印的兩行語句分別來自兩個數據源。

數據源新增、刪除、切換操作可以在切面中、業務邏輯中、注解中等各處進行觸發。DynamicDataSource不做任何限制,交由開發人員按照實際需要實現。

3 總結

怎么樣,DynamicDataSource的使用是不是非常簡單。通過Maven倉庫直接下載依賴,并且還有Demo項目指導,瞬間上手。

從此,動態數據源的切換So Easy!

實屬架構師、程序員秘笈,收藏起來,日后用。其具體接口可能在日后升級中變動,請以最新版本的README文檔為準。項目地址如下:

https://github.com/yeecode/DynamicDataSource?github.com

總結

以上是生活随笔為你收集整理的2 数据源配置_如何在程序运行中动态切换数据源?架构师必读秘笈的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。