Spring Boot starter that provides auto-configuration and integration support for Alibaba Druid database connection pool and monitoring system.
npx @tessl/cli install tessl/maven-com-alibaba--druid-spring-boot-starter@1.2.0The 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.
<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'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;Single DataSource Configuration:
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=60000The 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();
}
}The Druid Spring Boot Starter is built around several key components:
DruidDataSourceAutoConfigure automatically configures Druid DataSource when conditions are metDruidDataSourceWrapper extends DruidDataSource with Spring Boot integration featuresDruidDataSourceBuilder provides a fluent API for creating DataSource instancesDruidStatProperties provides type-safe configuration bindingCore 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();
}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);
}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
}
}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();
}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
}All configuration properties use the following prefixes:
spring.datasource.druid.* - Main DataSource configurationspring.datasource.druid.filter.stat.* - StatFilter configurationspring.datasource.druid.filter.wall.* - WallFilter configurationspring.datasource.druid.filter.{name}.* - Other filter configurationsspring.datasource.druid.web-stat-filter.* - WebStatFilter configurationspring.datasource.druid.stat-view-servlet.* - StatViewServlet configurationspring.datasource.druid.aop-patterns - AOP monitoring pattern configurationThe 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