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文件中寫入默認的數據源信息,下面為示例。可按照自己的數據源進行修改。
禁止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 数据源配置_如何在程序运行中动态切换数据源?架构师必读秘笈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jupyter配置到服务器_服务器端ju
- 下一篇: linux下如何搜索某个文件,技术|如何