05:springboot使用Druid作爲項目數據源(添加視圖化監控)

Druid是一個關係型數據庫連接池,它是阿里巴巴的一個開源項目。Druid支持所有JDBC兼容數據庫,包括了Oracle、MySQL、PostgreSQL、SQL Server、H2等。

Druid在監控、可擴展性、穩定性和性能方面具有明顯的優勢。通過Druid提供的監控功能,可以實時觀察數據庫連接池和SQL查詢的工作情況。使用Druid連接池在一定程度上可以提高數據訪問效率。

05:springboot使用Druid作為項目數據源(添加視圖化監控)

本章目標

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

添加Druid依賴

以後章節不做如何創建項目的講解了,如果需要了解請到前面的章節查看,謝謝!

因為阿里巴巴開源了druid連接池源碼,我們可以通過maven倉庫可以獲得jar包依賴。訪問mvnrepository.com/artifact/com.alibaba/druid選擇1.0.29,點擊進入後複製maven內容到pom.xml內即可,如下圖1所示:

05:springboot使用Druid作為項目數據源(添加視圖化監控)

圖1

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

添加Druid配置

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

05:springboot使用Druid作為項目數據源(添加視圖化監控)

圖2

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

初嘗試運行項目

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

05:springboot使用Druid作為項目數據源(添加視圖化監控)

圖3

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

05:springboot使用Druid作為項目數據源(添加視圖化監控)

圖4

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

05:springboot使用Druid作為項目數據源(添加視圖化監控)

圖5

可以看到我們已經可以訪問到用戶列表數據,證明我們已經配置成功了,如果中途你出現了什麼問題請檢查copy過來的類導包是否正確、以及application.yml配置文件內的配置是否正確。

我在再來看下IntelliJ IDEA工具控制檯的輸出日誌,如下圖6所示:

05:springboot使用Druid作為項目數據源(添加視圖化監控)

圖6

上述圖6內打印了sql語句,而這個sql則是SpringDataJpa自動生成的,我們已經完成了SpringBoot整合Druid連接池的部分,那麼我們接下來開啟Druid的監控功能。

開啟Druid監控功能

開啟監控功能,可以在應用運行的過程中,通過監控提供的多維度數據來分析使用數據庫的運行情況,從而可以調整程序設計,以便於優化數據庫的訪問性能。

下面我們來實現Druid的訪問Servlet以及Filter,如下圖7所示:

05:springboot使用Druid作為項目數據源(添加視圖化監控)

圖7

我們已經配置完成了Druid的監控,我們現在來重啟項目,查看IntellJ IDEA工具的控制檯是否正常運行,如果正常證明你已經配置成功,如果不正請查看配置是否正確,上圖7中的@Configuration註解是用來配置SpringBoot項目的配置註解,如果將該註解配置在實體類上,該類內的所有bean以及配置都會應用的全局。

項目運行成功後,我們要訪問Druid的監控界面,訪問地址:127.0.0.1:8080/druid/login.html,效果如下圖8所示:

05:springboot使用Druid作為項目數據源(添加視圖化監控)

圖8

上述圖8我們看到了我們成功的訪問了Druid的監控頁面,那麼我們現在輸入我們在DruidConfiguration內配置的用戶名密碼登錄監控平臺,進入監控平臺首頁,如下圖9所示:

05:springboot使用Druid作為項目數據源(添加視圖化監控)

圖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專題】【spring源碼】

【mysql優化專題】【HTTP協議】

【架構技術專題】【多線程專題】

【dubbo專題】【dubbo源碼專題】

【JVM調優專題】【HTTP協議專題】

【設計模式專題】【高併發專題】

【架構技術專題】【Lucene專題】

【數據結構專題】【redis專題】

【mq中間件專題】【netty專題】

【java面試專題】【zookeeper專題】


分享到:


相關文章: