動態修改JDBC資料來源配置

2021-08-04 14:43:58 字數 706 閱讀 1782

因專案需要能動態修改資料來源的配置,及修改後不用重啟整個應用。使用的資料來源是apache的basicdatasource,網上千篇一律的是如下實現:

basicdatasource bds=getdatasource();

trycatch(exception e)

bds.setusername("sa");

bds.setpassword("admin");

還說要先關閉,再修改配置才能生效。

這樣的**根本就實現不了所說的功能,直接執行出錯。連線池關閉後,就無法使用了。本身也沒有open,reopen之類的方法。

也有說c3p0支援熱修改,但本身好像有bug,容易出錯死鎖錯誤。也就沒有去研究到底支援不。

basicdatasource 的close方法其實只設定了乙個標識變數:closed,標記為關閉就取不到連線,要是能修改該標識為非關閉,就可以繼續使用了。

所以實現的思路是:先關閉,再修改配置,再開啟標識。問題是basicdatasource並沒有這樣的介面提供出來,幸運的是,basicdatasource中的

closed屬性是protected,也就是我們可以在子類中訪問到這個屬性,也就可以進行修改了。

所以只要自定義乙個類繼承於basicdatasource,提供如下方法即可:

public void open()

當然配置檔案中使用的資料來源的類名就需要改為這個自定義類了。

動態修改資料來源配置

因專案需要能動態修改資料來源的配置,及修改後不用重啟整個應用。使用的資料來源是apache的basicdatasource,網上千篇一律的是如下實現 basicdatasource bds getdatasource trycatch exception e bds.setusername sa b...

Springboot配置jdbc資料來源

通過 properitessource註解讀取配置資訊 1,加入依賴 2,通過自定義配置檔案配置資料來源資訊 3,建立配置類 package com.bdqn.springbootjdbc.config import com.alibaba.druid.pool.druiddatasource im...

動態資料來源配置

引入component utl 2.2.5 配置 com.cimen.ways groupid component util artifactid 2.2.5 version dependency 配置資料庫連線資訊,配置方式如下 configuration public class newmyba...