Spring boot學(xué)習(xí)(四)Spring boot整合Druid

前言

在上一篇博客中我們介紹了Spring boot配置Mybatis,但是并沒有配置連接池,這在實際開發(fā)過程中肯定是不切實際的,多次的數(shù)據(jù)庫連接會給程序和數(shù)據(jù)庫都帶來沒必要的負(fù)擔(dān),這一篇博客我將介紹java中目前最好,最流行的數(shù)據(jù)庫連接池---Druid。

文章首發(fā)于個人博客:【http://www.xiongfrblog.cn

Druid介紹

Druid阿里巴巴的一個開源項目,號稱為監(jiān)控而生的數(shù)據(jù)庫連接池,在功能、性能、擴(kuò)展性方面都超過其他例如DBCP、C3P0、BoneCP、ProxoolJBoss DataSource等連接池,而且Druid已經(jīng)在阿里巴巴部署了超過600個應(yīng)用,通過了極為嚴(yán)格的考驗,這才收獲了大家的青睞!

Spring boot配置Druid

話不多說,下面開始在我們的項目中配置Druid。本篇博客在上一篇博客Spring boot 整合Mybatis的基礎(chǔ)上配置Druid,關(guān)于Mybatis連接數(shù)據(jù)庫的內(nèi)容就不多說了。

添加依賴

在我們項目的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

添加配置

我看網(wǎng)上的教程這一塊寫的都很模糊,直接上來就是一堆配置,也沒有表明配置是什么意思,這對于喜歡復(fù)制粘貼的人來說很nice但是真的不利于我們掌握理解,所以我這里盡量分層給大家介紹的更清晰一些。

  1. 首先在項目的配置文件application.properties文件中添加如下內(nèi)容,表明使用Druid連接池:
#表明使用Druid連接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  1. 配置數(shù)據(jù)源信息(整合Mybatis的時候已經(jīng)說過了,為了連貫性這里再提一遍)
#配置實體類的位置
mybatis.type-aliases-package=com.web.springbootmybatis.entity
#xml文件位置
mybatis.mapper-locations=classpath:mapper/*.xml

#mysql數(shù)據(jù)庫連接信息配置
#mysql驅(qū)動
spring.datasource.driverClassName=com.mysql.jdbc.Driver
#數(shù)據(jù)庫連接信息
spring.datasource.url=jdbc:mysql://localhost:3306/eran?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#數(shù)據(jù)庫用戶名
spring.datasource.username=root
#數(shù)據(jù)庫密碼
spring.datasource.password=root
  1. 接下來配置連接池的相關(guān)屬性,這些參數(shù)根據(jù)自己的需要靈活配置即可:
#初始化時建立物理連接的個數(shù)。
spring.datasource.druid.initial-size=5
#最大連接池數(shù)量
spring.datasource.druid.max-active=20
#最小連接池數(shù)量
spring.datasource.druid.min-idle=5
#獲取連接時最大等待時間,單位毫秒
spring.datasource.druid.max-wait=3000
#是否緩存preparedStatement,也就是PSCache,PSCache對支持游標(biāo)的數(shù)據(jù)庫性能提升巨大,比如說oracle,在mysql下建議關(guān)閉。
spring.datasource.druid.pool-prepared-statements=false
#要啟用PSCache,必須配置大于0,當(dāng)大于0時,poolPreparedStatements自動觸發(fā)修改為true。在Druid中,不會存在Oracle下PSCache占用內(nèi)存過多的問題,可以把這個數(shù)值配置大一些,比如說100
spring.datasource.druid.max-open-prepared-statements= -1
#配置檢測可以關(guān)閉的空閑連接間隔時間
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. 通過別名的方式配置擴(kuò)展插件,常用的插件有:

    別名 含義
    stat 監(jiān)控統(tǒng)計
    log4j 日志
    wall 防御sql注入

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

    #監(jiān)控統(tǒng)計的stat,以及防sql注入的wall
    spring.datasource.druid.filters= stat,wall
    #Spring監(jiān)控AOP切入點,如x.y.z.service.*,配置多個英文逗號分隔
    spring.datasource.druid.aop-patterns= com.web.springbootdruid.service.*
    

這里配置很重要,比如不配置stat,我們在Druid的監(jiān)控頁面中就拿不到想要的信息。

  1. 上邊我們開啟stat監(jiān)控統(tǒng)計插件,下邊進(jìn)行監(jiān)控配置:
#是否啟用StatFilter默認(rèn)值true
spring.datasource.druid.web-stat-filter.enabled= true
#添加過濾規(guī)則
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內(nèi)置提供了一個StatViewServlet用于展示Druid的統(tǒng)計信息,StatViewServlet的用途包括:
  • 提供監(jiān)控信息展示的html頁面
  • 提供監(jiān)控信息的JSON API

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

#是否啟用StatViewServlet默認(rèn)值true
spring.datasource.druid.stat-view-servlet.enabled= true
#訪問路徑為/druid時,跳轉(zhuǎn)到StatViewServlet
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
# 是否能夠重置數(shù)據(jù)
spring.datasource.druid.stat-view-servlet.reset-enable=false
# 需要賬號密碼才能訪問控制臺,默認(rèn)為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
# IP黑名單(共同存在時,deny優(yōu)先于allow)
spring.datasource.druid.stat-view-servlet.deny=

到這里,關(guān)于Druid的配置就基本完成了,想要了解更多的朋友,可以去查閱官方文檔【傳送門】

驗證Druid

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

在這里插入圖片描述

進(jìn)入Druid的登陸頁面,輸入我們在配置文件中配置的用戶名和密碼登陸,進(jìn)入下面的頁面:

在這里插入圖片描述

首頁可以看到一些基本配置信息,點擊菜單欄中的數(shù)據(jù)源可以查看到我們的數(shù)據(jù)源配置信息,以及連接池配置信息:

在這里插入圖片描述

點擊sql監(jiān)控,查看執(zhí)行sql信息:

在這里插入圖片描述

發(fā)現(xiàn)此時沒有任何sql執(zhí)行記錄,所以我們訪問鏈接localhost:8080/user(上一篇博客的內(nèi)容),執(zhí)行一次查詢操作,再來查看 sql監(jiān)控頁面,發(fā)現(xiàn)已經(jīng)有了一條記錄:

在這里插入圖片描述

點擊該條記錄可以查看更多詳情,這里就不介紹了,配置成功的小伙伴們可以自己體驗Druid的各種強(qiáng)大功能!

結(jié)語

到這里,Spring boot整合Druid的內(nèi)容就介紹完了,希望對您有所幫助,下一篇博客再見!bye~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容