第四章:使用Druid作為SpringBoot專案資料來源(新增監控)
Druid是一個關係型資料庫連線池,它是阿里巴巴的一個開源專案。Druid支援所有JDBC相容資料庫,包括了Oracle、MySQL、PostgreSQL、SQL Server、H2等。
Druid在監控、可擴充套件性、穩定性和效能方面具有明顯的優勢。通過Druid提供的監控功能,可以實時觀察資料庫連線池和SQL查詢的工作情況。使用Druid連線池在一定程度上可以提高資料訪問效率。
本章目標
SpringBoot整合Druid完成MySQL資料訪問,以及配置Druid監控模組整合。
新增Druid依賴
以後章節不做如何建立專案的講解了,如果需要了解請到前面的章節檢視,謝謝!
因為阿里巴巴開源了druid連線池原始碼,我們可以通過maven倉庫可以獲得jar包依賴。訪問
圖1
當我們新增maven依賴的時候,專案是不會自動匯入的,這時你會看到又下角有個提示,"Enable Auto import"我們點選該選項即可自動下載maven依賴的jar到本地.m2目錄並構建到專案中。
新增Druid配置
我們已經將druid新增到我們的專案中,那麼接下來我們需要修改application.yml配置檔案,新增druid的支援,如下圖2所示:
圖2
上面配置中的filters:stat表示已經可以使用監控過濾器,這時結合定義一個過濾器,就可以用來監控資料庫的使用情況。
初嘗試執行專案
我們把第三章:SpringBoot使用SpringDataJPA完成CRUD的資料操作部分程式碼複製到我們本章專案內,需要複製UserController、UserJPA、UserEntity等到目錄結構下,如下圖3所示:
圖3
上述圖3已經把對應的類複製到了本章專案內,我們嘗試啟動專案,啟動日誌如下圖4所示:
圖4
可以看到我紅色標註的地方,SpringBoot已經把Druid當做dataSource載入到了專案中,那麼我們現在訪問使用者列表地址:127.0.0.1:8080/user/list,效果如下圖5所示:
圖5
可以看到我們已經可以訪問到使用者列表資料,證明我們已經配置成功了,如果中途你出現了什麼問題請檢查copy過來的類導包是否正確、以及application.yml配置檔案內的配置是否正確。
我在再來看下IntelliJ IDEA工具控制檯的輸出日誌,如下圖6所示:
圖6
上述圖6內列印了sql語句,而這個sql則是SpringDataJpa自動生成的,我們已經完成了SpringBoot整合Druid連線池的部分,那麼我們接下來開啟Druid的監控功能。
開啟Druid監控功能
開啟監控功能,可以在應用執行的過程中,通過監控提供的多維度資料來分析使用資料庫的執行情況,從而可以調整程式設計,以便於優化資料庫的訪問效能。
下面我們來實現Druid的訪問Servlet以及Filter,如下圖7所示:
圖7
我們已經配置完成了Druid的監控,我們現在來重啟專案,檢視IntellJ IDEA工具的控制檯是否正常執行,如果正常證明你已經配置成功,如果不正請檢視配置是否正確,上圖7中的@Configuration註解是用來配置SpringBoot專案的配置註解,如果將該註解配置在實體類上,該類內的所有bean以及配置都會應用的全域性。
專案執行成功後,我們要訪問Druid的監控介面,訪問地址:127.0.0.1:8080/druid/login.html,效果如下圖8所示:
圖8
上述圖8我們看到了我們成功的訪問了Druid的監控頁面,那麼我們現在輸入我們在DruidConfiguration內配置的使用者名稱、密碼登入監控平臺,進入監控平臺首頁,如下圖9所示:
圖9
我們已經成功的訪問到了監控首頁,可以看到大致包含了如下幾個模組:資料來源、SQL監控、SQL防火牆、Web應用、URI監控、Session監控、JSONAPI等。
資料來源
可以看到專案中管理的所有資料來源配置的詳細情況,除了密碼沒有顯示外其他都在。
SQL監控
可以檢視所有的執行sql語句
SQL防火牆
druid提供了黑白名單的訪問,可以清楚的看到sql防護情況。
Web應用
可以看到目前執行的web程式的詳細資訊。
URI監控
可以監控到所有的請求路徑的請求次數、請求時間等其他引數。
Session監控
可以看到當前的session狀況,建立時間、最後活躍時間、請求次數、請求時間等詳細引數。
JSONAPI
通過api的形式訪問Druid的監控介面,api介面返回Json形式資料。
總結
上述講解就是本章的全部內容,本章主要講解了SpringBoot整合Druid資料庫連線池完成SpringDataJpa訪問MySQL資料,開啟了Druid連線池本身自帶的資料監控功能,可以清晰的看到SQL執行以及Session活躍情況,方便優化SQL。
本章節的程式碼已經上傳到碼雲:
歡迎加入QQ技術交流群,共同進步。
QQ技術交流群