前言
在上一篇博客中我們介紹了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、Proxool、JBoss 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的配置類文件,而第一種依賴項則不需要,這里我使用的就是第一種--更簡單,第二種就不介紹了,想了解的朋友請自行
添加配置
我看網(wǎng)上的教程這一塊寫的都很模糊,直接上來就是一堆配置,也沒有表明配置是什么意思,這對于喜歡復(fù)制粘貼的人來說很nice但是真的不利于我們掌握理解,所以我這里盡量分層給大家介紹的更清晰一些。
- 首先在項目的配置文件
application.properties文件中添加如下內(nèi)容,表明使用Druid連接池:
#表明使用Druid連接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
- 配置數(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
- 接下來配置連接池的相關(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
-
通過別名的方式配置擴(kuò)展插件,常用的插件有:
別名 含義 stat 監(jiān)控統(tǒng)計 log4j 日志 wall 防御sql注入 這里我們就配置了
stat和wall,配置多個英文逗號分隔,配置如下:#監(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)控頁面中就拿不到想要的信息。
- 上邊我們開啟
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/*
- 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~