or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

auto-configuration.mdconfiguration-properties.mddatasource-management.mdfilter-configuration.mdindex.mdmonitoring-integration.md
tile.json

tessl/maven-com-alibaba--druid-spring-boot-starter

Spring Boot starter that provides auto-configuration and integration support for Alibaba Druid database connection pool and monitoring system.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.alibaba/druid-spring-boot-starter@1.2.x

To install, run

npx @tessl/cli install tessl/maven-com-alibaba--druid-spring-boot-starter@1.2.0

index.mddocs/

Druid Spring Boot Starter

The Druid Spring Boot Starter provides auto-configuration and integration support for the Alibaba Druid database connection pool and monitoring system. It simplifies the integration of Druid into Spring Boot applications by providing automatic configuration based on application properties, enabling developers to easily configure database connection pooling, SQL monitoring, web monitoring filters, and various security and performance features through standard Spring Boot configuration files.

Package Information

  • Package Name: druid-spring-boot-starter
  • Package Type: maven
  • Group ID: com.alibaba
  • Artifact ID: druid-spring-boot-starter
  • Language: Java
  • Installation: Add Maven dependency:
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.25</version>
</dependency>

For Gradle:

implementation 'com.alibaba:druid-spring-boot-starter:1.2.25'

Core Imports

import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceWrapper;
import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;

Basic Usage

Single DataSource Configuration:

  1. Add the starter dependency to your Spring Boot project
  2. Configure basic properties in application.properties or application.yml:
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# Druid-specific configuration
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-wait=60000

The starter will automatically create and configure a DruidDataSourceWrapper bean.

Multiple DataSource Configuration:

@Configuration
public class DataSourceConfig {
    
    @Primary
    @Bean
    @ConfigurationProperties("spring.datasource.druid.primary")
    public DataSource primaryDataSource() {
        return DruidDataSourceBuilder.create().build();
    }
    
    @Bean
    @ConfigurationProperties("spring.datasource.druid.secondary") 
    public DataSource secondaryDataSource() {
        return DruidDataSourceBuilder.create().build();
    }
}

Architecture

The Druid Spring Boot Starter is built around several key components:

  • Auto-Configuration: DruidDataSourceAutoConfigure automatically configures Druid DataSource when conditions are met
  • DataSource Wrapper: DruidDataSourceWrapper extends DruidDataSource with Spring Boot integration features
  • Builder Pattern: DruidDataSourceBuilder provides a fluent API for creating DataSource instances
  • Configuration Properties: DruidStatProperties provides type-safe configuration binding
  • Monitoring Integration: Automatic setup of StatViewServlet, WebStatFilter, and AOP monitoring when enabled
  • Filter Management: Automatic registration and configuration of various Druid filters

Capabilities

Auto-Configuration

Core Spring Boot auto-configuration that automatically sets up Druid DataSource with sensible defaults and property-based configuration.

@Configuration
@ConditionalOnProperty(name = "spring.datasource.type", havingValue = "com.alibaba.druid.pool.DruidDataSource", matchIfMissing = true)
@ConditionalOnClass(DruidDataSource.class)
@AutoConfigureBefore(DataSourceAutoConfiguration.class)
@EnableConfigurationProperties({DruidStatProperties.class, DataSourceProperties.class})
public class DruidDataSourceAutoConfigure {
    
    @Bean
    @ConditionalOnMissingBean({DruidDataSourceWrapper.class, DruidDataSource.class, DataSource.class})
    public DruidDataSourceWrapper dataSource();
}

Auto-Configuration

DataSource Management

DataSource creation, configuration, and lifecycle management with Spring Boot integration.

@ConfigurationProperties("spring.datasource.druid")
public class DruidDataSourceWrapper extends DruidDataSource implements InitializingBean {
    
    void afterPropertiesSet() throws Exception;
    void autoAddFilters(List<Filter> filters);
    void setMaxEvictableIdleTimeMillis(long maxEvictableIdleTimeMillis);
}

public class DruidDataSourceBuilder {
    
    static DruidDataSourceBuilder create();
    DruidDataSource build();
    
    @Deprecated
    DruidDataSource build(Environment env, String prefix);
}

DataSource Management

Configuration Properties

Type-safe configuration properties for all Druid settings including connection pool, monitoring, and filter configuration.

@ConfigurationProperties("spring.datasource.druid")
public class DruidStatProperties {
    
    String[] getAopPatterns();
    void setAopPatterns(String[] aopPatterns);
    
    StatViewServlet getStatViewServlet();
    void setStatViewServlet(StatViewServlet statViewServlet);
    
    WebStatFilter getWebStatFilter();
    void setWebStatFilter(WebStatFilter webStatFilter);
    
    static class StatViewServlet {
        boolean isEnabled();
        void setEnabled(boolean enabled);
        // ... other properties
    }
    
    static class WebStatFilter {
        boolean isEnabled();
        void setEnabled(boolean enabled);
        // ... other properties  
    }
}

Configuration Properties

Monitoring Integration

Web-based monitoring console and statistics collection with configurable security and filtering options.

@ConditionalOnWebApplication
@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true")
public class DruidStatViewServletConfiguration {
    
    @Bean
    public ServletRegistrationBean statViewServletRegistrationBean(DruidStatProperties properties);
}

@ConditionalOnWebApplication  
@ConditionalOnProperty(name = "spring.datasource.druid.web-stat-filter.enabled", havingValue = "true")
public class DruidWebStatFilterConfiguration {
    
    @Bean
    public FilterRegistrationBean webStatFilterRegistrationBean(DruidStatProperties properties);
}

@ConditionalOnProperty("spring.datasource.druid.aop-patterns")
public class DruidSpringAopConfiguration {
    
    @Bean
    public Advice advice();
    
    @Bean  
    public Advisor advisor(DruidStatProperties properties);
    
    @Bean
    @ConditionalOnProperty(name = "spring.aop.auto", havingValue = "false")
    public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator();
}

Monitoring Integration

Filter Configuration

Automatic configuration and registration of various Druid filters for logging, security, statistics, and encoding.

public class DruidFilterConfiguration {
    
    @Bean
    @ConfigurationProperties("spring.datasource.druid.filter.stat")
    @ConditionalOnProperty(prefix = "spring.datasource.druid.filter.stat", name = "enabled")
    public StatFilter statFilter();
    
    @Bean
    @ConfigurationProperties("spring.datasource.druid.filter.wall")
    @ConditionalOnProperty(prefix = "spring.datasource.druid.filter.wall", name = "enabled")
    public WallFilter wallFilter(WallConfig wallConfig);
    
    @Bean
    @ConfigurationProperties("spring.datasource.druid.filter.config")
    @ConditionalOnProperty(prefix = "spring.datasource.druid.filter.config", name = "enabled")
    public ConfigFilter configFilter();
    
    // Additional filter beans: EncodingConvertFilter, Slf4jLogFilter, Log4jFilter, Log4j2Filter, CommonsLogFilter
}

Filter Configuration

Configuration Prefixes

All configuration properties use the following prefixes:

  • spring.datasource.druid.* - Main DataSource configuration
  • spring.datasource.druid.filter.stat.* - StatFilter configuration
  • spring.datasource.druid.filter.wall.* - WallFilter configuration
  • spring.datasource.druid.filter.{name}.* - Other filter configurations
  • spring.datasource.druid.web-stat-filter.* - WebStatFilter configuration
  • spring.datasource.druid.stat-view-servlet.* - StatViewServlet configuration
  • spring.datasource.druid.aop-patterns - AOP monitoring pattern configuration

Supported Database Types

The following database types are supported for stat and wall filters: db2, postgresql, sqlserver, oracle, AliOracle, mysql, mariadb, hive, h2, lealone, dm, kingbase, tydb, oceanbase, xugu, odps, teradata, log4jdbc, phoenix, edb, kylin, sqlite