SpringBoot入門之集成Druid


Druid:為監控而生的數據庫連接池.這篇先了解下它的簡單使用,下篇嘗試用它做多數據源配置。主要參考:https://github.com/alibaba/druid/wiki/常見問題 https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

一、引入依賴

這里看其他博客都是引用的Druid,由於是使用springboot集成,這里參考druid官方文檔,用的是druid-spring-boot-starter。

        <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>druid-spring-boot-starter</artifactId>
           <version>1.1.10</version>
        </dependency>

二、設置屬性

這里用的demo還是在上一博客基礎上進行的修改,所以已經配置上了數據庫連接和mybatis。

spring.mvc.view.prefix=/view/

spring.mvc.view.suffix=.jsp
mybatis.type-aliases-package=com.example.model
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

#spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
#spring.datasource.url = jdbc:mysql://localhost:3306/mybatis
spring.datasource.url =jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username = root
spring.datasource.password = 123456
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource


spring.datasource.druid.max-active=20

spring.datasource.druid.initial-size=1

spring.datasource.druid.max-wait=60000

spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
spring.datasource.druid.min-idle=1
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.validation-query=select 1 from dual
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.test-on-return=true

這里配置與其他有的博客不太一樣,spring.datasource后面多了個druid,屬性名稱也有一些變化。

三、配置連接池的監控和慢sql處理

這里只需要在啟動類同級目錄下增加一個class類配置即可。這里創建了DruidConfiguration類,這里配置了WebStatFilter配置和StatViewServlet配置.

package com.example.demo;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.*;

import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;

@Configuration
public class DruidConfiguration {

    @Bean
    public ServletRegistrationBean statViewServlet(){
        //創建servlet注冊實體
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        //設置ip白名單
        servletRegistrationBean.addInitParameter("allow","127.0.0.1");
        //設置ip黑名單,如果allow與deny共同存在時,deny優先於allow
        servletRegistrationBean.addInitParameter("deny","192.168.0.19");
        //設置控制台管理用戶
        servletRegistrationBean.addInitParameter("loginUsername","druid");
        servletRegistrationBean.addInitParameter("loginPassword","123456");
        //是否可以重置數據
        servletRegistrationBean.addInitParameter("resetEnable","false");
        return servletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean statFilter(){
        //創建過濾器
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        //設置過濾器過濾路徑
        filterRegistrationBean.addUrlPatterns("/*");
        //忽略過濾的形式
        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }
}

四、測試

這里先啟動應用,然后在瀏覽器輸入http://127.0.0.1:8080/druid/index.html,就會顯示登錄頁面,輸入上面類配置的密碼即可登錄.

然后輸入上一博客顯示用戶列表的url:http://localhost:8080/user/alluser.do,再看到druid頁面,查看SQL監控就會有剛才執行的sql信息,URL監控和Session監控也有對應的信息,由於這沒配置Spring監控所以Spring監控的信息,對於Spring監控會在以后補充,下一篇准備是使用druid配置多數據源。

 五、監控配置補充

今天在看github上關於監控配置,發現文檔是直接在資源文件配置屬性,那也就是說不用創建config文件,所以剛才又試了一下,發現還真是可以。這里我直接把上面的DruidConfiguration類刪除了,然后在application.properties中增加監控配置信息就可以了。

spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
spring.datasource.druid.web-stat-filter.session-stat-enable=true
spring.datasource.druid.web-stat-filter.session-stat-max-count=1000



spring.datasource.druid.stat-view-servlet.enabled= true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.reset-enable=true
spring.datasource.druid.stat-view-servlet.login-username=druid
spring.datasource.druid.stat-view-servlet.login-password=123456
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
spring.datasource.druid.stat-view-servlet.deny=192.168.0.19

再次運行和上面創建配置類時一樣的效果,至於spring配置因為我搜其他博客看着比較麻煩,以為還需要另外建新的文件然后在引入aop的依賴,今天試了下發現其實很方便,只需要配置一下就可以了。這里我對mapper包下的進行監控配置下面一行代碼即可搞定。

spring.datasource.druid.aop-patterns=com.example.mapper.*

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM