Integrating Druid Connection Pool and Monitoring in Spring Boot

Maven Dependency

Include the Druid starter in your project's POM file to enable connection pooling and built-in monitoring capabilities.

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

Application Configuration

Define the database connection details and Druid-specific settings within your application.yml. The configuration below specifies pool sizing, eviction policies, and monitoring filters such as stat for SQL statistics and wall for firewall protection.

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://db-server:3306/app_db
    username: admin
    password: securePass
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 10
      min-idle: 10
      max-active: 50
      max-wait: 60000
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 1
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 25
      filters: stat,wall,slf4j
      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=300

Enabling the Monitoring Console

To access the Druid dashboard, register the StatViewServlet and WebStatFilter via a Java configuration class. This setup secures the monitoring endpoint and defines URL patterns for tracking web requests.

package com.example.app.config;

import com.alibaba.druid.support.jakarta.StatViewServlet;
import com.alibaba.druid.support.jakarta.WebStatFilter;
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 java.util.Collections;
import java.util.HashMap;
import java.util.Map;

@Configuration
public class DruidMonitorSetup {

    @Bean
    public ServletRegistrationBean<StatViewServlet> statViewServlet() {
        StatViewServlet servlet = new StatViewServlet();
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(servlet, "/druid/*");
        
        Map<String, String> params = new HashMap<>();
        params.put("loginUsername", "sysadmin");
        params.put("loginPassword", "strongPwd");
        params.put("allow", "127.0.0.1");
        params.put("deny", "");
        
        bean.setInitParameters(params);
        return bean;
    }

    @Bean
    public FilterRegistrationBean<WebStatFilter> webStatFilter() {
        WebStatFilter filter = new WebStatFilter();
        FilterRegistrationBean<WebStatFilter> bean = new FilterRegistrationBean<>(filter);
        
        bean.setUrlPatterns(Collections.singletonList("/*"));
        
        Map<String, String> filterParams = new HashMap<>();
        filterParams.put("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        
        bean.setInitParameters(filterParams);
        return bean;
    }
}

Tags: Spring Boot druid database JDBC monitoring

Posted on Wed, 07 Oct 2026 16:40:39 +0000 by varzosu