Backend Development 13 min read

Using Alibaba Druid Connection Pool in Spring Boot: Configuration, Monitoring, and Customization

This article provides a comprehensive guide on integrating Alibaba's Druid connection pool into Spring Boot applications, covering its advantages, dependency setup, detailed configuration properties, built‑in filters, monitoring pages, ad removal techniques, and programmatic access to runtime statistics.

Selected Java Interview Questions
Selected Java Interview Questions
Selected Java Interview Questions
Using Alibaba Druid Connection Pool in Spring Boot: Configuration, Monitoring, and Customization

We have all used connection pools such as C3P0, DBCP, Hikari, Druid ; although HikariCP is slightly faster, Druid offers powerful monitoring and extensibility as an open‑source project from Alibaba.

Druid, developed by Alibaba, is marketed as a monitoring‑first database connection pool that surpasses other pools (DBCP, C3P0, BoneCP, Proxool, JBoss DataSource) in functionality, performance, and extensibility.

It provides excellent monitoring of DB pool connections and SQL execution, making it ideal for web applications.

Spring Boot 2.x defaults to HikariDataSource and JdbcTemplate , but both Hikari and Druid are considered top‑class data sources for Java web projects.

Druid has been deployed in over 600 Alibaba applications, proving its reliability in large‑scale production environments.

stat: Druid includes StatFilter for statistical monitoring.

wall: WallFilter defends against SQL injection using Druid's SQL parser.

log4j2: Logs SQL statements for troubleshooting.

1. Related Configuration

1.1 Add Dependency

<properties>
    <java.version>1.8</java.version>
    <alibabaDruidStarter.version>1.2.11</alibabaDruidStarter.version>
</properties>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>${alibabaDruidStarter.version}</version>
</dependency>

1.2 Configuration Properties

Configure Druid data source (initial size, max connections, etc.) similar to C3P0/DBCP.

Configure WebStatFilter to collect web request DB information.

Configure StatViewServlet for the web UI (login, password, etc.).

These properties are defined in com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties and org.springframework.boot.autoconfigure.jdbc.DataSourceProperties .

1.3 Configure Filters

Enable built‑in filters via spring.datasource.druid.filters=stat,wall,log4j or customize them in the configuration file:

# Configure StatFilter
spring.datasource.druid.filter.stat.enabled=true
spring.datasource.druid.filter.stat.db-type=h2
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=2000

# Configure WallFilter
spring.datasource.druid.filter.wall.enabled=true
spring.datasource.druid.filter.wall.db-type=h2
spring.datasource.druid.filter.wall.config.delete-allow=false
spring.datasource.druid.filter.wall.config.drop-table-allow=false

Supported filters include StatFilter, WallFilter, ConfigFilter, EncodingConvertFilter, Slf4jLogFilter, Log4jFilter, Log4j2Filter, and CommonsLogFilter.

2. Monitoring Pages

After starting the application, visit http://localhost:8081/druid/login.html to log in and access various monitoring pages such as DataSource overview, SQL statistics, URL statistics, Spring AOP monitoring, SQL firewall, Session monitoring, and JSON API.

3. SQL Monitoring

Configure WebStatFilter to collect SQL execution details:

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

4. Slow SQL Recording

Enable slow‑SQL logging:

spring:
  datasource:
    druid:
      filter:
        stat:
          enabled: true
          db-type: mysql
          log-slow-sql: true
          slow-sql-millis: 2000

5. Spring Monitoring (AOP)

Add the AOP starter dependency and configure the AOP pointcut pattern, e.g., com.springboot.template.dao.* :

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

6. Remove Druid Footer Advertisement

Two methods are provided: manually comment out the // this.buildFooter(); line in common.js inside the Druid JAR, or register a custom filter that rewrites common.js to strip the ad HTML.

@Configuration
@ConditionalOnWebApplication
@AutoConfigureAfter(DruidDataSourceAutoConfigure.class)
@ConditionalOnProperty(name="spring.datasource.druid.stat-view-servlet.enabled", havingValue="true", matchIfMissing=true)
public class RemoveDruidAdConfig {
    @Bean
    public FilterRegistrationBean removeDruidAdFilterRegistrationBean(DruidStatProperties properties) {
        // ... filter implementation that reads common.js, removes ad snippets, and writes back ...
    }
}

7. Access Druid Monitoring Data Programmatically

Use DruidStatManagerFacade#getDataSourceStatDataList to retrieve runtime statistics, or other methods provided by the facade.

@RestController
@RequestMapping("/druid")
public class DruidStatController {
    @GetMapping("/stat")
    public Object druidStat() {
        // Get data source monitoring data
        return DruidStatManagerFacade.getInstance().getDataSourceStatDataList();
    }
}

Source: blog.csdn.net/lvoelife/article/details/128092586

BackendJavaMonitoringConnection PoolSpring BootDruid
Selected Java Interview Questions
Written by

Selected Java Interview Questions

A professional Java tech channel sharing common knowledge to help developers fill gaps. Follow us!

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.