SpringBoot整合druid數(shù)據(jù)源及添加Druid監(jiān)控頁(yè)面

不是不會(huì)鹃觉,只是沒(méi)見(jiàn)過(guò)厢钧,代碼只是一種工具,首先要會(huì)用掏呼,應(yīng)用中使用druid連接池坏快,并添加監(jiān)控

  • 1.首先引入druid坐標(biāo)
<dependency>
    <groupId>com.alibaba</groupId>
     <artifactId>druid</artifactId>
     <version>1.0.11</version>
</dependency>
  • 2.添加druid配置參數(shù)

參考:

數(shù)據(jù)庫(kù)連接池優(yōu)化配置(druid,dbcp,c3p0)

參數(shù) 默認(rèn)值 解釋
initialSize 3 初始化配置
minIdle 3 最小連接數(shù)
maxActive 15 最大連接數(shù)
maxWait 5000 獲取連接超時(shí)時(shí)間(單位:ms)
timeBetweenEvictionRunsMillis 90000 連接有效性檢測(cè)時(shí)間(單位:ms)
testOnBorrow false 獲取連接檢測(cè)
testOnReturn false 歸還連接檢測(cè)
minEvictableIdleTimeMillis 1800000 最大空閑時(shí)間(單位ms)
testWhileIdle true 在獲取連接后,確定是否要進(jìn)行連接空間時(shí)間的檢查
  • 配置說(shuō)明:

1:minEvictableIdleTimeMillis(最大空閑時(shí)間):默認(rèn)為30分鐘憎夷,配置里面不進(jìn)行設(shè)置莽鸿。

2:testOnBorrow ,testOnReturn 默認(rèn)為關(guān)閉,可以設(shè)置為不配置拾给。

3:testWhileIdle(在獲取連接后祥得,確定是否要進(jìn)行連接空閑時(shí)間的檢查)。默認(rèn)為true蒋得。配置里面不再進(jìn)行設(shè)置级及。

  • 流程說(shuō)明:

1:在第一次調(diào)用connection的時(shí)候,才會(huì)進(jìn)行 initialSize的初始化额衙。

2:心跳檢測(cè)時(shí)間線程饮焦,會(huì)休眠timeBetweenEvictionRunsMillis時(shí)間,然后只對(duì)(沒(méi)有borrow的線程 減去 minIdle)的線程進(jìn)行檢查窍侧,如果空閑時(shí)間大于minEvictableIdleTimeMillis則進(jìn)行close县踢。

3:testWhileIdle必須設(shè)置為true,在獲取到連接后伟件,先檢查testOnBorrow硼啤,然后再判定testwhileIdle,如果連接空閑時(shí)間大于timeBetweenEvictionRunsMillis斧账,則會(huì)進(jìn)行心跳檢測(cè)谴返。

4:不需要配置validationQuery,如果不配置的情況下會(huì)走ping命令咧织,性能更高嗓袱。

5:連接保存在數(shù)組里面,獲取連接的時(shí)候习绢,獲取數(shù)組的最后一位索抓。在imeBetweenEvictionRunsMillis時(shí)是從前往后進(jìn)行檢查連接的有效性。

在applicatioin.properties中添加配置

druid.url=jdbc:postgresql://139.1X8.1.1X8:1XX0/account
druid.driver-class=org.postgresql.Driver
druid.username=root
druid.password=123
druid.initial-size=1
druid.min-idle=1
druid.max-active=20
druid.test-on-borrow=true
druid.timeBetweenEvictionRunsMillis=9000
  • 3.定義配置類(lèi)毯炮,啟動(dòng)讀取druid開(kāi)頭的參數(shù)

driver-class有和driverClass是不一樣的逼肯,所以要引入,參數(shù)容錯(cuò)坐標(biāo)

  <!--配置命名容錯(cuò)處理-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
@ConfigurationProperties(prefix = "druid")
public class DruidProperties {
    private String url;
    private String username;
    private String password;
    private String driverClass;
    private int maxActive;//最大連接數(shù)
    private int minIdle;//最小連接數(shù)
    private int initialSize;//初始化數(shù)量和
    private boolean testOnBorrow;
    private Long timeBetweenEvictionRunsMillis;//心跳
}
  • 4.注入
@Configuration
@EnableConfigurationProperties(DruidProperties.class)
@ConditionalOnClass(DruidDataSource.class)
@ConditionalOnProperty(prefix = "druid", name = "url")
@AutoConfigureBefore(DataSourceAutoConfiguration.class)
public class DruidAutoConfiguration {

    @Autowired
    private DruidProperties properties;

    @Bean
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(properties.getUrl());
        dataSource.setUsername(properties.getUsername());
        dataSource.setPassword(properties.getPassword());
        dataSource.setTimeBetweenEvictionRunsMillis(properties.getTimeBetweenEvictionRunsMillis());
        if (properties.getInitialSize() > 0) {
            dataSource.setInitialSize(properties.getInitialSize());
        }
        if (properties.getMinIdle() > 0) {
            dataSource.setMinIdle(properties.getMinIdle());
        }
        if (properties.getMaxActive() > 0) {
            dataSource.setMaxActive(properties.getMaxActive());
        }
        dataSource.setTestOnBorrow(properties.isTestOnBorrow());
        try {
            dataSource.init();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return dataSource;
    }
}
  • 5.添加攔截器桃煎,攔截器druid性能監(jiān)控
/**
 * @Package: pterosaur.account.config.druid
 * @Description: 監(jiān)控?cái)?shù)據(jù)庫(kù)性能
 * @author: liuxin
 * @date: 17/4/21 上午11:23
 */
@SuppressWarnings("serial")
@WebServlet(urlPatterns = "/druid/*",
        initParams={
                @WebInitParam(name="allow",value="192.168.16.110,127.0.0.1"),// IP白名單 (沒(méi)有配置或者為空篮幢,則允許所有訪問(wèn))
                @WebInitParam(name="deny",value="192.168.16.111"),// IP黑名單 (存在共同時(shí),deny優(yōu)先于allow)
                @WebInitParam(name="loginUsername",value="test"),// 用戶(hù)名
                @WebInitParam(name="loginPassword",value="test"),// 密碼
                @WebInitParam(name="resetEnable",value="false")// 禁用HTML頁(yè)面上的“Reset All”功能
        })
public class DruidStatViewServlet extends StatViewServlet{
}


/**
 * @Package: pterosaur.account.config.filter
 * @Description: 攔截druid監(jiān)控請(qǐng)求
 * @author: liuxin
 * @date: 17/4/21 上午11:24
 */
@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",
        initParams={
                @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略資源
        })
public class DruidStatFilter extends WebStatFilter{
}

  • 6.最終要一步为迈,啟動(dòng)掃描Servlet
@SpringBootApplication
@MapperScan(basePackages = "pterosaur.account.mapper")
@EnableCaching
@ServletComponentScan  //這個(gè)
public class AccountApplication {

    public static void main(String[] args) {
        SpringApplication.run(AccountApplication.class, args);
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末三椿,一起剝皮案震驚了整個(gè)濱河市缺菌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搜锰,老刑警劉巖伴郁,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蛋叼,居然都是意外死亡焊傅,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)狈涮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)狐胎,“玉大人,你說(shuō)我怎么就攤上這事歌馍∥粘玻” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵松却,是天一觀的道長(zhǎng)暴浦。 經(jīng)常有香客問(wèn)我,道長(zhǎng)晓锻,這世上最難降的妖魔是什么歌焦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮带射,結(jié)果婚禮上同规,老公的妹妹穿的比我還像新娘循狰。我一直安慰自己窟社,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布绪钥。 她就那樣靜靜地躺著灿里,像睡著了一般。 火紅的嫁衣襯著肌膚如雪程腹。 梳的紋絲不亂的頭發(fā)上匣吊,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音寸潦,去河邊找鬼色鸳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛见转,可吹牛的內(nèi)容都是我干的命雀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼斩箫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吏砂!你這毒婦竟也來(lái)了撵儿?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤狐血,失蹤者是張志新(化名)和其女友劉穎淀歇,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體匈织,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浪默,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了报亩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浴鸿。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖弦追,靈堂內(nèi)的尸體忽然破棺而出岳链,到底是詐尸還是另有隱情,我是刑警寧澤劲件,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布掸哑,位于F島的核電站,受9級(jí)特大地震影響零远,放射性物質(zhì)發(fā)生泄漏苗分。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一牵辣、第九天 我趴在偏房一處隱蔽的房頂上張望摔癣。 院中可真熱鬧,春花似錦纬向、人聲如沸择浊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)琢岩。三九已至,卻和暖如春师脂,著一層夾襖步出監(jiān)牢的瞬間担孔,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工吃警, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留糕篇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓酌心,卻偏偏與公主長(zhǎng)得像拌消,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谒府,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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