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

前言

在上一篇博客中我們介紹了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式镐、C3P0BoneCP固蚤、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)自行Google蕉鸳。

添加配置

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

  1. 首先在項(xiàng)目的配置文件application.properties文件中添加如下內(nèi)容衍锚,表明使用Druid連接池:
#表明使用Druid連接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  1. 配置數(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
  1. 接下來(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
  1. 通過(guò)別名的方式配置擴(kuò)展插件嫂用,常用的插件有:

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

    這里我們就配置了statwall,配置多個(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è)面中就拿不到想要的信息甘畅。

  1. 上邊我們開(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/*
  1. 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~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掩宜,一起剝皮案震驚了整個(gè)濱河市蔫骂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌牺汤,老刑警劉巖辽旋,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異檐迟,居然都是意外死亡戴已,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)锅减,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人伐坏,你說(shuō)我怎么就攤上這事怔匣。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵每瞒,是天一觀的道長(zhǎng)金闽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)剿骨,這世上最難降的妖魔是什么代芜? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮浓利,結(jié)果婚禮上挤庇,老公的妹妹穿的比我還像新娘。我一直安慰自己贷掖,他們只是感情好嫡秕,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著苹威,像睡著了一般昆咽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上牙甫,一...
    開(kāi)封第一講書(shū)人閱讀 49,806評(píng)論 1 290
  • 那天掷酗,我揣著相機(jī)與錄音,去河邊找鬼窟哺。 笑死泻轰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的脏答。 我是一名探鬼主播糕殉,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼殖告!你這毒婦竟也來(lái)了阿蝶?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤黄绩,失蹤者是張志新(化名)和其女友劉穎羡洁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體爽丹,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筑煮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粤蝎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片真仲。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖初澎,靈堂內(nèi)的尸體忽然破棺而出秸应,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布软啼,位于F島的核電站桑谍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏祸挪。R本人自食惡果不足惜锣披,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贿条。 院中可真熱鬧雹仿,春花似錦、人聲如沸闪唆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悄蕾。三九已至票顾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間帆调,已是汗流浹背奠骄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留番刊,地道東北人含鳞。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像芹务,于是被迫代替她去往敵國(guó)和親蝉绷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容