Spring Boot 項目集成 Alibaba Druid


Druid 是一個非常好用的數據庫連接池,但是他的好並不止體現在作為一個連接池加快數據訪問性能上和連接管理上,他帶有一個強大的監控工具:Druid Monitor。不僅可以監控數據源和慢查詢,還可以監控 Web 應用、URI 監控、Session 監控、Spring 監控。

1、引入依賴

在 Spring Boot 項目中加入 druid-spring-boot-starter 依賴
Maven:

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

Gradle:

compile 'com.alibaba:druid-spring-boot-starter:1.1.16'

2、配置 application.yml

spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull
      username: root
      password: test123$
      # 下面為連接池的補充設置,應用到上面所有數據源中
      # 初始化大小,最小,最大
      initialSize: 1
      minIdle: 3
      maxActive: 20
      # 配置獲取連接等待超時的時間
      maxWait: 60000
      # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # 配置一個連接在池中最小生存的時間,單位是毫秒
      minEvictableIdleTimeMillis: 30000
      validationQuery: select 'x'
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      # 打開 PSCache,並且指定每個連接上 PSCache 的大小
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      # 配置監控統計攔截的 filters,去掉后監控界面 sql 無法統計,'wall'用於防火牆
      filters: stat,wall,slf4j
      # 通過 connectProperties 屬性來打開 mergeSql 功能;慢 SQL 記錄
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # 合並多個 DruidDataSource 的監控數據
      useGlobalDataSourceStat: true
    type: com.alibaba.druid.pool.DruidDataSource

屬性說明:

spring.datasource.druid.max-active # 最大連接數
spring.datasource.druid.initial-size # 初始化大小
spring.datasource.druid.min-idle # 最小連接數
spring.datasource.druid.max-wait # 獲取連接等待超時時間
spring.datasource.druid.time-between-eviction-runs-millis # 間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒
spring.datasource.druid.min-evictable-idle-time-millis # 一個連接在池中最小生存的時間,單位是毫秒
spring.datasource.druid.filters=config,stat,wall,log4j # 配置監控統計攔截的 filters,去掉后監控界面 SQL 無法進行統計,wall 用於防火牆

3、配置 DruidMonitorConfig 類

DruidMonitorConfig 類:


import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;

@Configuration
public class DruidMonitorConfig {

    @Primary
    @Bean
    @ConfigurationProperties("spring.datasource.druid")
    public DataSource druidDataSource() {
        return DruidDataSourceBuilder.create().build();
    }

    /**
     * 注冊 ServletRegistrationBean
     *
     * @return
     */
    @Bean
    public ServletRegistrationBean registrationBean() {
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        /** 初始化參數配置,initParams**/
        // 白名單
        bean.addInitParameter("allow", "127.0.0.1");// 多個 ip 逗號隔開
        // IP 黑名單 (存在共同時,deny 優先於 allow) : 如果滿足 deny 的話提示:Sorry, you are not permitted to view this page.
        // bean.addInitParameter("deny", "192.168.1.73");
        // 登錄查看信息的賬號密碼.
        bean.addInitParameter("loginUsername", "admin");
        bean.addInitParameter("loginPassword", "123456");
        // 是否能夠重置數據.
        bean.addInitParameter("resetEnable", "true");
        return bean;
    }

    /**
     * 注冊 FilterRegistrationBean
     *
     * @return
     */
    @Bean
    public FilterRegistrationBean druidStatFilter() {
        FilterRegistrationBean bean = new FilterRegistrationBean(new WebStatFilter());
        //添加過濾規則.
        bean.addUrlPatterns("/*");
        //添加不需要忽略的格式信息.
        bean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return bean;
    }

}

到此 Spring Boot 項目集成 Druid 監控完成了,啟動 Spring Boot 應用程序,打開瀏覽器,輸入:http://localhost:8080/druid/index.html, 登錄后即可看到 Druid 的監控界面。


免責聲明!

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



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