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.
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=falseSupported 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: 10004. Slow SQL Recording
Enable slow‑SQL logging:
spring:
datasource:
druid:
filter:
stat:
enabled: true
db-type: mysql
log-slow-sql: true
slow-sql-millis: 20005. 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
Selected Java Interview Questions
A professional Java tech channel sharing common knowledge to help developers fill gaps. Follow us!
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.