第四章:使用Druid做爲SpringBoot項目數據源(添加監控)

Druid是一個關係型數據庫鏈接池,它是阿里巴巴的一個開源項目。Druid支持全部JDBC兼容數據庫,包括了Oracle、MySQL、PostgreSQL、SQL Server、H2等。
Druid在監控、可擴展性、穩定性和性能方面具備明顯的優點。經過Druid提供的監控功能,能夠實時觀察數據庫鏈接池和SQL查詢的工做狀況。使用Druid鏈接池在必定程度上能夠提升數據訪問效率。html

本章目標

SpringBoot整合Druid完成MySQL數據訪問,以及配置Druid監控模塊整合。git

添加Druid依賴

之後章節不作如何建立項目的講解了,若是須要了解請到前面的章節查看,謝謝!
由於阿里巴巴開源了druid鏈接池源碼,咱們能夠經過maven倉庫能夠得到jar包依賴。訪問mvnrepository.com/artifact/co…選擇1.0.29,點擊進入後複製maven內容到pom.xml內便可,以下圖1所示:web


圖1

當咱們添加maven依賴的時候,項目是不會自動導入的,這時你會看到又下角有個提示,"Enable Auto import"咱們點擊該選項便可自動下載maven依賴的jar到本地.m2目錄並構建到項目中。spring

添加Druid配置

咱們已經將druid添加到咱們的項目中,那麼接下來咱們須要修改application.yml配置文件,添加druid的支持,以下圖2所示:sql


圖2

上面配置中的filters:stat表示已經可使用監控過濾器,這時結合定義一個過濾器,就能夠用來監控數據庫的使用狀況。數據庫

初嘗試運行項目

咱們把第三章:SpringBoot使用SpringDataJPA完成CRUD的數據操做部分代碼複製到咱們本章項目內,須要複製UserController、UserJPA、UserEntity等到目錄結構下,以下圖3所示:api


圖3

上述圖3已經把對應的類複製到了本章項目內,咱們嘗試啓動項目,啓動日誌以下圖4所示:session


圖4

能夠看到我紅色標註的地方,SpringBoot已經把Druid當作dataSource加載到了項目中,那麼咱們如今訪問用戶列表地址:127.0.0.1:8080/user/list,效果以下圖5所示:app


圖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。

本章節的代碼已經上傳到碼雲:

SpringBoot配套源碼地址:gitee.com/hengboy/spr…

SpringCloud配套源碼地址:gitee.com/hengboy/spr…

SpringBoot相關係列文章請訪問:目錄:SpringBoot學習目錄

QueryDSL相關係列文章請訪問:QueryDSL通用查詢框架學習目錄

SpringDataJPA相關係列文章請訪問:目錄:SpringDataJPA學習目錄

SpringBoot相關文章請訪問:目錄:SpringBoot學習目錄,感謝閱讀!

歡迎加入QQ技術交流羣,共同進步。


QQ技術交流羣
相關文章
相關標籤/搜索