sharing-jdbc讀寫分離(二)--自定義配置數據源

前言

  在使用shrading jdbc實現讀寫分離的基礎上,本篇將介紹自定義配置數據源。讀寫分離配置可參考我另一篇文章:https://blog.csdn.net/u012786993/article/details/89368423
  配置代碼參考我的GitHub:https://github.com/hubSKH/sharding-jdbc-demo/tree/pwd_dev

實現步驟

1、關閉sharding jdbc的自動配置

  正常情況下,應用sharding jdbc的jar包之後,工程啓動sharding會讀取配置文件(application.yml等)中對應的數據源配置(根據前綴),然後直接創建數據源。而此時,一些自定義的配置方式會導致SQLException等異常拋出,如以密文的形式配置數據庫密碼,創建數據源的時候會因爲缺失解密操作而拋出“Access denied for user XXX”的SQLException。
  所以,在實現自定義配置數據源之前需要關閉sharding jdbc的數據源自動配置。具體做法爲:在啓動類的@SpringBootApplication的exclude增加io.shardingsphere.jdbc.spring.boot.SpringBootConfiguration類即可。
在這裏插入圖片描述

2、創建數據源配置類

  創建類ShardingDataSourceConfig,在類中實現自動以數據源裝配,具體實現可參考上一步中關閉自動配置的SpringBootConfiguration類。
在這裏插入圖片描述
  然後根據配置前綴,循環讀取數據源,創建數據源,本工程使用阿里的druid數據源,所以直接創建DruidDataSource數據源對象,其他使用其他數據源(c3p0,hikari,個人更喜歡使用druid)需要修改數據源對象,或者直接使用數據源接口DataSource。因爲工程配置文件中,數據庫密碼以密文寫入,在創建數據源時需要解密操作,通用接口DataSource滿足不了自定義配置的操作。
在這裏插入圖片描述
  在創建數據源的同時,還可以自定義數據源最大連接、心跳等配置。考慮篇幅有限,數據源的大部分相同,本工程將這些數據源配置放置一起,每個數據源配置一樣的參數。
在這裏插入圖片描述
  實際開發中,如果數據庫的壓力不一樣的話,則不建議使用這種配置方式,應改爲在每個數據源配的配置項中各自配置,然後由DataSourceUtil.getDataSource加載這些配置。不過要注意的是配置項的名稱需要與對應數據源的屬性相同(相同數據源,版本不同,屬性也可能有所改變)。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章