Spring boot學習(四)Spring boot整合Druid

諾丨言發表於2019-01-17

前言

在上一篇部落格中我們介紹了Spring boot配置Mybatis,但是並沒有配置連線池,這在實際開發過程中肯定是不切實際的,多次的資料庫連線會給程式和資料庫都帶來沒必要的負擔,這一篇部落格我將介紹java中目前最好,最流行的資料庫連線池---Druid

文章首發於個人部落格:【www.xiongfrblog.cn

Druid介紹

Druid阿里巴巴的一個開源專案,號稱為監控而生的資料庫連線池,在功能、效能、擴充套件性方面都超過其他例如DBCPC3P0BoneCPProxoolJBoss DataSource等連線池,而且Druid已經在阿里巴巴部署了超過600個應用,通過了極為嚴格的考驗,這才收穫了大家的青睞!

Spring boot配置Druid

話不多說,下面開始在我們的專案中配置Druid。本篇部落格在上一篇部落格Spring boot 整合Mybatis的基礎上配置Druid,關於Mybatis連線資料庫的內容就不多說了。

新增依賴

在我們專案的pom.xml檔案中新增如下的依賴:

<!-- druid -->
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.1.10</version>
</dependency>
複製程式碼

這裡需要注意的是(很多人出錯的原因),Druid還有另外一種依賴如下:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.3</version>
</dependency>
複製程式碼

兩種依賴都可以,但是配置的方式有些不同,使用下面的這種依賴項,在配置的時候需要新建Druid的配置類檔案,而第一種依賴項則不需要,這裡我使用的就是第一種--更簡單,第二種就不介紹了,想了解的朋友請自行Google

新增配置

我看網上的教程這一塊寫的都很模糊,直接上來就是一堆配置,也沒有表明配置是什麼意思,這對於喜歡複製貼上的人來說很nice但是真的不利於我們掌握理解,所以我這裡儘量分層給大家介紹的更清晰一些。

  1. 首先在專案的配置檔案application.properties檔案中新增如下內容,表明使用Druid連線池:
#表明使用Druid連線池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
複製程式碼
  1. 配置資料來源資訊(整合Mybatis的時候已經說過了,為了連貫性這裡再提一遍)
#配置實體類的位置
mybatis.type-aliases-package=com.web.springbootmybatis.entity
#xml檔案位置
mybatis.mapper-locations=classpath:mapper/*.xml

#mysql資料庫連線資訊配置
#mysql驅動
spring.datasource.driverClassName=com.mysql.jdbc.Driver
#資料庫連線資訊
spring.datasource.url=jdbc:mysql://localhost:3306/eran?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#資料庫使用者名稱
spring.datasource.username=root
#資料庫密碼
spring.datasource.password=root
複製程式碼
  1. 接下來配置連線池的相關屬性,這些引數根據自己的需要靈活配置即可:
#初始化時建立物理連線的個數。
spring.datasource.druid.initial-size=5
#最大連線池數量
spring.datasource.druid.max-active=20
#最小連線池數量
spring.datasource.druid.min-idle=5
#獲取連線時最大等待時間,單位毫秒
spring.datasource.druid.max-wait=3000
#是否快取preparedStatement,也就是PSCache,PSCache對支援遊標的資料庫效能提升巨大,比如說oracle,在mysql下建議關閉。
spring.datasource.druid.pool-prepared-statements=false
#要啟用PSCache,必須配置大於0,當大於0時,poolPreparedStatements自動觸發修改為true。在Druid中,不會存在Oracle下PSCache佔用記憶體過多的問題,可以把這個數值配置大一些,比如說100
spring.datasource.druid.max-open-prepared-statements= -1
#配置檢測可以關閉的空閒連線間隔時間
spring.datasource.druid.time-between-eviction-runs-millis=60000
# 配置連線在池中的最小生存時間
spring.datasource.druid.min-evictable-idle-time-millis= 300000
spring.datasource.druid.max-evictable-idle-time-millis= 400000
複製程式碼
  1. 通過別名的方式配置擴充套件外掛,常用的外掛有:

    別名 含義
    stat 監控統計
    log4j 日誌
    wall 防禦sql注入

    這裡我們就配置了statwall,配置多個英文逗號分隔,配置如下:

    #監控統計的stat,以及防sql注入的wall
    spring.datasource.druid.filters= stat,wall
    #Spring監控AOP切入點,如x.y.z.service.*,配置多個英文逗號分隔
    spring.datasource.druid.aop-patterns= com.web.springbootdruid.service.*
    複製程式碼

這裡配置很重要,比如不配置stat,我們在Druid的監控頁面中就拿不到想要的資訊。

  1. 上邊我們開啟stat監控統計外掛,下邊進行監控配置:
#是否啟用StatFilter預設值true
spring.datasource.druid.web-stat-filter.enabled= true
#新增過濾規則
spring.datasource.druid.web-stat-filter.url-pattern=/*
#忽略過濾的格式
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
複製程式碼
  1. StatViewServlet配置:Druid內建提供了一個StatViewServlet用於展示Druid的統計資訊,StatViewServlet的用途包括:
  • 提供監控資訊展示的html頁面
  • 提供監控資訊的JSON API

配置如下,需要注意的是使用者名稱和密碼:

#是否啟用StatViewServlet預設值true
spring.datasource.druid.stat-view-servlet.enabled= true
#訪問路徑為/druid時,跳轉到StatViewServlet
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
# 是否能夠重置資料
spring.datasource.druid.stat-view-servlet.reset-enable=false
# 需要賬號密碼才能訪問控制檯,預設為root
spring.datasource.druid.stat-view-servlet.login-username=druid
spring.datasource.druid.stat-view-servlet.login-password=druid
#IP白名單
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
#&emsp;IP黑名單(共同存在時,deny優先於allow)
spring.datasource.druid.stat-view-servlet.deny=
複製程式碼

到這裡,關於Druid的配置就基本完成了,想要了解更多的朋友,可以去查閱官方文件【傳送門】

驗證Druid

我們直接啟動專案,瀏覽器訪問localhost:8080/druid或者127.0.0.1:8080/druid得到如下頁面說明配置成功:

在這裡插入圖片描述

進入Druid的登陸頁面,輸入我們在配置檔案中配置的使用者名稱和密碼登陸,進入下面的頁面:

在這裡插入圖片描述

首頁可以看到一些基本配置資訊,點選選單欄中的資料來源可以檢視到我們的資料來源配置資訊,以及連線池配置資訊:

在這裡插入圖片描述

點選sql監控,檢視執行sql資訊:

在這裡插入圖片描述

發現此時沒有任何sql執行記錄,所以我們訪問連結localhost:8080/user(上一篇部落格的內容),執行一次查詢操作,再來檢視 sql監控頁面,發現已經有了一條記錄:

在這裡插入圖片描述

點選該條記錄可以檢視更多詳情,這裡就不介紹了,配置成功的小夥伴們可以自己體驗Druid的各種強大功能!

結語

到這裡,Spring boot整合Druid的內容就介紹完了,希望對您有所幫助,下一篇部落格再見!bye~

相關文章