整合Druid數(shù)據(jù)源

引入依賴

<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.22</version>
</dependency>
配置 缺省值 說(shuō)明
name 配置這個(gè)屬性的意義在于橱夭,如果存在多個(gè)數(shù)據(jù)源荆隘,監(jiān)控的時(shí)候可以通過(guò)名字來(lái)區(qū)分開來(lái)无埃。如果沒有配置,將會(huì)生成一個(gè)名字喊积,格式是:"DataSource-" + System.identityHashCode(this)
jdbcUrl 連接數(shù)據(jù)庫(kù)的url烹困,不同數(shù)據(jù)庫(kù)不一樣。例如: mysql : jdbc:mysql://10.20.153.104:3306/druid2 oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto
username 連接數(shù)據(jù)庫(kù)的用戶名
password 連接數(shù)據(jù)庫(kù)的密碼乾吻。如果你不希望密碼直接寫在配置文件中髓梅,可以使用ConfigFilter拟蜻。詳細(xì)看這里:https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter
driverClassName 根據(jù)url自動(dòng)識(shí)別 這一項(xiàng)可配可不配,如果不配置druid會(huì)根據(jù)url自動(dòng)識(shí)別dbType枯饿,然后選擇相應(yīng)的driverClassName(建議配置下)
initialSize 0 初始化時(shí)建立物理連接的個(gè)數(shù)酝锅。初始化發(fā)生在顯示調(diào)用init方法,或者第一次getConnection時(shí)
maxActive 8 最大連接池?cái)?shù)量
maxIdle 8 已經(jīng)不再使用奢方,配置了也沒效果
minIdle 最小連接池?cái)?shù)量
maxWait 獲取連接時(shí)最大等待時(shí)間搔扁,單位毫秒。配置了maxWait之后蟋字,缺省啟用公平鎖稿蹲,并發(fā)效率會(huì)有所下降,如果需要可以通過(guò)配置useUnfairLock屬性為true使用非公平鎖鹊奖。
poolPreparedStatements false 是否緩存preparedStatement场绿,也就是PSCache。PSCache對(duì)支持游標(biāo)的數(shù)據(jù)庫(kù)性能提升巨大嫉入,比如說(shuō)oracle。在mysql下建議關(guān)閉璧尸。
maxOpenPreparedStatements -1 要啟用PSCache咒林,必須配置大于0,當(dāng)大于0時(shí)爷光,poolPreparedStatements自動(dòng)觸發(fā)修改為true垫竞。在Druid中,不會(huì)存在Oracle下PSCache占用內(nèi)存過(guò)多的問題蛀序,可以把這個(gè)數(shù)值配置大一些欢瞪,比如說(shuō)100
validationQuery 用來(lái)檢測(cè)連接是否有效的sql,要求是一個(gè)查詢語(yǔ)句徐裸。如果validationQuery為null遣鼓,testOnBorrow、testOnReturn重贺、testWhileIdle都不會(huì)其作用骑祟。
testOnBorrow true 申請(qǐng)連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效,做了這個(gè)配置會(huì)降低性能气笙。
testOnReturn false 歸還連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效次企,做了這個(gè)配置會(huì)降低性能。
testWhileIdle false 建議配置為true潜圃,不影響性能缸棵,并且保證安全性。申請(qǐng)連接的時(shí)候檢測(cè)谭期,如果空閑時(shí)間大于timeBetweenEvictionRunsMillis堵第,執(zhí)行validationQuery檢測(cè)連接是否有效吧凉。
timeBetweenEvictionRunsMillis 有兩個(gè)含義: 1) Destroy線程會(huì)檢測(cè)連接的間隔時(shí)間 2) testWhileIdle的判斷依據(jù),詳細(xì)看testWhileIdle屬性的說(shuō)明
numTestsPerEvictionRun 不再使用型诚,一個(gè)DruidDataSource只支持一個(gè)EvictionRun
minEvictableIdleTimeMillis
connectionInitSqls 物理連接初始化的時(shí)候執(zhí)行的sql
exceptionSorter 根據(jù)dbType自動(dòng)識(shí)別 當(dāng)數(shù)據(jù)庫(kù)拋出一些不可恢復(fù)的異常時(shí)客燕,拋棄連接
filters 屬性類型是字符串,通過(guò)別名的方式配置擴(kuò)展插件狰贯,常用的插件有: 監(jiān)控統(tǒng)計(jì)用的filter:stat日志用的filter:log4j防御sql注入的filter:wall
proxyFilters 類型是List<com.alibaba.druid.filter.Filter>也搓,如果同時(shí)配置了filters和proxyFilters,是組合關(guān)系涵紊,并非替換關(guān)系

application.yml

spring:
  datasource:
    username: root
    password:
    url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    #druid數(shù)據(jù)源專有配置
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

配置類

package com.young.springbootdata.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.util.HashMap;

@Configuration
public class DruidConfig {

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druidDataSource(){
        return new DruidDataSource();
    }

    /**
     * 后臺(tái)監(jiān)控
     * springboot內(nèi)置了servlet容器,所以沒有web.xml,替代方法:ServletRegistrationBean
     */
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
        //后臺(tái)需要有人登陸,賬號(hào)密碼設(shè)置
        HashMap<String, String> initParameters = new HashMap<>(16);
        //增加配置
        //登錄key是固定的,loginUsername,loginPassword
        initParameters.put("loginUsername","admin");
        initParameters.put("loginPassword","123456");
        //允許誰(shuí)可以訪問
        initParameters.put("allow","");
        //設(shè)置初始化參數(shù)
        bean.setInitParameters(initParameters);
        return bean;
    }

}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末傍妒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子摸柄,更是在濱河造成了極大的恐慌颤练,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驱负,死亡現(xiàn)場(chǎng)離奇詭異嗦玖,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)跃脊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門宇挫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人酪术,你說(shuō)我怎么就攤上這事器瘪。” “怎么了绘雁?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵橡疼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我庐舟,道長(zhǎng)欣除,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任继阻,我火速辦了婚禮耻涛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瘟檩。我一直安慰自己抹缕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布墨辛。 她就那樣靜靜地躺著卓研,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奏赘,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天寥闪,我揣著相機(jī)與錄音,去河邊找鬼磨淌。 笑死疲憋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的梁只。 我是一名探鬼主播缚柳,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼搪锣!你這毒婦竟也來(lái)了秋忙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤构舟,失蹤者是張志新(化名)和其女友劉穎灰追,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狗超,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弹澎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了努咐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裁奇。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖麦撵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情溃肪,我是刑警寧澤免胃,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站惫撰,受9級(jí)特大地震影響羔沙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜厨钻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一扼雏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧夯膀,春花似錦诗充、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春茎匠,著一層夾襖步出監(jiān)牢的瞬間格仲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工诵冒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凯肋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓汽馋,卻偏偏與公主長(zhǎng)得像侮东,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惭蟋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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