前言
在上一篇博客中我們介紹了Spring boot配置Mybatis
腔长,但是并沒(méi)有配置連接池玩荠,這在實(shí)際開(kāi)發(fā)過(guò)程中肯定是不切實(shí)際的,多次的數(shù)據(jù)庫(kù)連接會(huì)給程序和數(shù)據(jù)庫(kù)都帶來(lái)沒(méi)必要的負(fù)擔(dān)械姻,這一篇博客我將介紹java中目前最好柒啤,最流行的數(shù)據(jù)庫(kù)連接池---Druid
。
文章首發(fā)于個(gè)人博客:【http://www.xiongfrblog.cn】
Druid介紹
Druid
是阿里巴巴的一個(gè)開(kāi)源項(xiàng)目龄砰,號(hào)稱(chēng)為監(jiān)控而生的數(shù)據(jù)庫(kù)連接池盟猖,在功能、性能换棚、擴(kuò)展性方面都超過(guò)其他例如DBCP
式镐、C3P0
、BoneCP
固蚤、Proxool
娘汞、JBoss
DataSource
等連接池,而且Druid已經(jīng)在阿里巴巴部署了超過(guò)600個(gè)應(yīng)用,通過(guò)了極為嚴(yán)格的考驗(yàn)夕玩,這才收獲了大家的青睞你弦!
Spring boot配置Druid
話不多說(shuō)惊豺,下面開(kāi)始在我們的項(xiàng)目中配置Druid
。本篇博客在上一篇博客Spring boot 整合Mybatis的基礎(chǔ)上配置Druid
禽作,關(guān)于Mybatis
連接數(shù)據(jù)庫(kù)的內(nèi)容就不多說(shuō)了尸昧。
添加依賴(lài)
在我們項(xiàng)目的pom.xml
文件中添加如下的依賴(lài):
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
這里需要注意的是(很多人出錯(cuò)的原因),Druid
還有另外一種依賴(lài)如下:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.3</version>
</dependency>
兩種依賴(lài)都可以旷偿,但是配置的方式有些不同烹俗,使用下面的這種依賴(lài)項(xiàng),在配置的時(shí)候需要新建
Druid
的配置類(lèi)文件萍程,而第一種依賴(lài)項(xiàng)則不需要幢妄,這里我使用的就是第一種--更簡(jiǎn)單,第二種就不介紹了茫负,想了解的朋友請(qǐng)自行
添加配置
我看網(wǎng)上的教程這一塊寫(xiě)的都很模糊,直接上來(lái)就是一堆配置朽褪,也沒(méi)有表明配置是什么意思置吓,這對(duì)于喜歡復(fù)制粘貼的人來(lái)說(shuō)很nice
但是真的不利于我們掌握理解,所以我這里盡量分層給大家介紹的更清晰一些缔赠。
- 首先在項(xiàng)目的配置文件
application.properties
文件中添加如下內(nèi)容衍锚,表明使用Druid
連接池:
#表明使用Druid連接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
- 配置數(shù)據(jù)源信息(整合Mybatis的時(shí)候已經(jīng)說(shuō)過(guò)了,為了連貫性這里再提一遍)
#配置實(shí)體類(lèi)的位置
mybatis.type-aliases-package=com.web.springbootmybatis.entity
#xml文件位置
mybatis.mapper-locations=classpath:mapper/*.xml
#mysql數(shù)據(jù)庫(kù)連接信息配置
#mysql驅(qū)動(dòng)
spring.datasource.driverClassName=com.mysql.jdbc.Driver
#數(shù)據(jù)庫(kù)連接信息
spring.datasource.url=jdbc:mysql://localhost:3306/eran?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#數(shù)據(jù)庫(kù)用戶(hù)名
spring.datasource.username=root
#數(shù)據(jù)庫(kù)密碼
spring.datasource.password=root
- 接下來(lái)配置連接池的相關(guān)屬性,這些參數(shù)根據(jù)自己的需要靈活配置即可:
#初始化時(shí)建立物理連接的個(gè)數(shù)嗤堰。
spring.datasource.druid.initial-size=5
#最大連接池?cái)?shù)量
spring.datasource.druid.max-active=20
#最小連接池?cái)?shù)量
spring.datasource.druid.min-idle=5
#獲取連接時(shí)最大等待時(shí)間戴质,單位毫秒
spring.datasource.druid.max-wait=3000
#是否緩存preparedStatement,也就是PSCache,PSCache對(duì)支持游標(biāo)的數(shù)據(jù)庫(kù)性能提升巨大踢匣,比如說(shuō)oracle,在mysql下建議關(guān)閉告匠。
spring.datasource.druid.pool-prepared-statements=false
#要啟用PSCache,必須配置大于0离唬,當(dāng)大于0時(shí)后专,poolPreparedStatements自動(dòng)觸發(fā)修改為true。在Druid中输莺,不會(huì)存在Oracle下PSCache占用內(nèi)存過(guò)多的問(wèn)題戚哎,可以把這個(gè)數(shù)值配置大一些,比如說(shuō)100
spring.datasource.druid.max-open-prepared-statements= -1
#配置檢測(cè)可以關(guān)閉的空閑連接間隔時(shí)間
spring.datasource.druid.time-between-eviction-runs-millis=60000
# 配置連接在池中的最小生存時(shí)間
spring.datasource.druid.min-evictable-idle-time-millis= 300000
spring.datasource.druid.max-evictable-idle-time-millis= 400000
-
通過(guò)別名的方式配置擴(kuò)展插件嫂用,常用的插件有:
別名 含義 stat 監(jiān)控統(tǒng)計(jì) log4j 日志 wall 防御sql注入 這里我們就配置了
stat
和wall
,配置多個(gè)英文逗號(hào)分隔型凳,配置如下:#監(jiān)控統(tǒng)計(jì)的stat,以及防sql注入的wall spring.datasource.druid.filters= stat,wall #Spring監(jiān)控AOP切入點(diǎn),如x.y.z.service.*,配置多個(gè)英文逗號(hào)分隔 spring.datasource.druid.aop-patterns= com.web.springbootdruid.service.*
這里配置很重要嘱函,比如不配置
stat
,我們?cè)?code>Druid的監(jiān)控頁(yè)面中就拿不到想要的信息甘畅。
- 上邊我們開(kāi)啟
stat
監(jiān)控統(tǒng)計(jì)插件,下邊進(jìn)行監(jiān)控配置:
#是否啟用StatFilter默認(rèn)值true
spring.datasource.druid.web-stat-filter.enabled= true
#添加過(guò)濾規(guī)則
spring.datasource.druid.web-stat-filter.url-pattern=/*
#忽略過(guò)濾的格式
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
- StatViewServlet配置:Druid內(nèi)置提供了一個(gè)StatViewServlet用于展示Druid的統(tǒng)計(jì)信息,StatViewServlet的用途包括:
- 提供監(jiān)控信息展示的html頁(yè)面
- 提供監(jiān)控信息的JSON API
配置如下疏唾,需要注意的是用戶(hù)名和密碼:
#是否啟用StatViewServlet默認(rèn)值true
spring.datasource.druid.stat-view-servlet.enabled= true
#訪問(wèn)路徑為/druid時(shí)蓄氧,跳轉(zhuǎn)到StatViewServlet
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
# 是否能夠重置數(shù)據(jù)
spring.datasource.druid.stat-view-servlet.reset-enable=false
# 需要賬號(hào)密碼才能訪問(wèn)控制臺(tái),默認(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黑名單(共同存在時(shí)荸实,deny優(yōu)先于allow)
spring.datasource.druid.stat-view-servlet.deny=
到這里匀们,關(guān)于Druid
的配置就基本完成了,想要了解更多的朋友准给,可以去查閱官方文檔【傳送門(mén)】
驗(yàn)證Druid
我們直接啟動(dòng)項(xiàng)目泄朴,瀏覽器訪問(wèn)localhost:8080/druid
或者127.0.0.1:8080/druid
得到如下頁(yè)面說(shuō)明配置成功:
進(jìn)入Druid
的登陸頁(yè)面,輸入我們?cè)谂渲梦募信渲玫挠脩?hù)名和密碼登陸露氮,進(jìn)入下面的頁(yè)面:
首頁(yè)可以看到一些基本配置信息祖灰,點(diǎn)擊菜單欄中的數(shù)據(jù)源可以查看到我們的數(shù)據(jù)源配置信息,以及連接池配置信息:
點(diǎn)擊sql監(jiān)控
畔规,查看執(zhí)行sql
信息:
發(fā)現(xiàn)此時(shí)沒(méi)有任何sql
執(zhí)行記錄局扶,所以我們?cè)L問(wèn)鏈接localhost:8080/user
(上一篇博客的內(nèi)容),執(zhí)行一次查詢(xún)操作叁扫,再來(lái)查看 sql監(jiān)控
頁(yè)面三妈,發(fā)現(xiàn)已經(jīng)有了一條記錄:
點(diǎn)擊該條記錄可以查看更多詳情,這里就不介紹了莫绣,配置成功的小伙伴們可以自己體驗(yàn)Druid
的各種強(qiáng)大功能畴蒲!
結(jié)語(yǔ)
到這里,Spring boot整合Druid
的內(nèi)容就介紹完了对室,希望對(duì)您有所幫助模燥,下一篇博客再見(jiàn)!bye~