Spring Boot starter that provides auto-configuration and integration support for Alibaba Druid database connection pool and monitoring system.
—
The Druid Spring Boot Starter provides automatic configuration for Druid DataSource integration through Spring Boot's auto-configuration mechanism.
Main auto-configuration class that conditionally creates and configures Druid DataSource beans when appropriate conditions are met.
/**
* Auto-configuration for Druid DataSource integration
* Conditionally creates DruidDataSourceWrapper when:
* - spring.datasource.type is set to DruidDataSource or not specified
* - DruidDataSource class is available on classpath
* - No existing DataSource beans are present
*/
@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})
@Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidWebStatFilterConfiguration.class, DruidFilterConfiguration.class})
public class DruidDataSourceAutoConfigure {
/**
* Creates the primary DruidDataSourceWrapper bean when no other DataSource beans exist
* @return DruidDataSourceWrapper configured with Spring Boot properties
*/
@Bean
@ConditionalOnMissingBean({DruidDataSourceWrapper.class, DruidDataSource.class, DataSource.class})
public DruidDataSourceWrapper dataSource();
}Key Features:
spring.datasource.type is set to Druid or not specifiedDruidStatProperties and DataSourcePropertiesUsage Example:
The auto-configuration activates automatically when you add the starter dependency. To ensure it activates, either:
spring.datasource.type (it will default to Druid)spring.datasource.type=com.alibaba.druid.pool.DruidDataSourceThe auto-configuration enables two main property classes:
/**
* Standard Spring Boot DataSource properties
* Used as fallback when Druid-specific properties are not set
*/
@EnableConfigurationProperties(DataSourceProperties.class)
/**
* Druid-specific configuration properties
* Takes precedence over standard DataSource properties
*/
@EnableConfigurationProperties(DruidStatProperties.class)The auto-configuration uses @Import to conditionally include related configuration:
@Import({
DruidSpringAopConfiguration.class, // AOP monitoring integration
DruidStatViewServletConfiguration.class, // Web monitoring console
DruidWebStatFilterConfiguration.class, // Web statistics filter
DruidFilterConfiguration.class // Various Druid filters
})Each imported configuration class has its own conditional logic, so they only activate when their specific conditions are met.
The configuration is explicitly ordered to run before Spring Boot's default DataSource auto-configuration:
@AutoConfigureBefore(DataSourceAutoConfiguration.class)This ensures that if Druid conditions are met, the Druid DataSource will be created instead of Spring Boot's default DataSource.
The auto-configuration will create a DruidDataSourceWrapper bean when ALL of the following conditions are true:
spring.datasource.type is either unset or set to com.alibaba.druid.pool.DruidDataSourceDruidDataSource.class is available on the classpathDruidDataSourceWrapper, DruidDataSource, or DataSource are presentConfiguration Override:
If you need to disable the auto-configuration entirely, you can exclude it:
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
public class Application {
// ...
}Or in application.properties:
spring.autoconfigure.exclude=com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigureInstall with Tessl CLI
npx tessl i tessl/maven-com-alibaba--druid-spring-boot-starter