or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

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

auto-configuration.mddocs/

0

# Auto-Configuration

1

2

The Druid Spring Boot Starter provides automatic configuration for Druid DataSource integration through Spring Boot's auto-configuration mechanism.

3

4

## Capabilities

5

6

### DruidDataSourceAutoConfigure

7

8

Main auto-configuration class that conditionally creates and configures Druid DataSource beans when appropriate conditions are met.

9

10

```java { .api }

11

/**

12

* Auto-configuration for Druid DataSource integration

13

* Conditionally creates DruidDataSourceWrapper when:

14

* - spring.datasource.type is set to DruidDataSource or not specified

15

* - DruidDataSource class is available on classpath

16

* - No existing DataSource beans are present

17

*/

18

@Configuration

19

@ConditionalOnProperty(name = "spring.datasource.type", havingValue = "com.alibaba.druid.pool.DruidDataSource", matchIfMissing = true)

20

@ConditionalOnClass(DruidDataSource.class)

21

@AutoConfigureBefore(DataSourceAutoConfiguration.class)

22

@EnableConfigurationProperties({DruidStatProperties.class, DataSourceProperties.class})

23

@Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidWebStatFilterConfiguration.class, DruidFilterConfiguration.class})

24

public class DruidDataSourceAutoConfigure {

25

26

/**

27

* Creates the primary DruidDataSourceWrapper bean when no other DataSource beans exist

28

* @return DruidDataSourceWrapper configured with Spring Boot properties

29

*/

30

@Bean

31

@ConditionalOnMissingBean({DruidDataSourceWrapper.class, DruidDataSource.class, DataSource.class})

32

public DruidDataSourceWrapper dataSource();

33

}

34

```

35

36

**Key Features:**

37

38

- **Conditional Activation**: Only activates when `spring.datasource.type` is set to Druid or not specified

39

- **Class Path Detection**: Requires DruidDataSource class to be available

40

- **Bean Conflict Prevention**: Won't create DataSource if one already exists

41

- **Property Integration**: Automatically binds `DruidStatProperties` and `DataSourceProperties`

42

- **Component Import**: Imports all related configuration classes for monitoring, AOP, and filters

43

44

**Usage Example:**

45

46

The auto-configuration activates automatically when you add the starter dependency. To ensure it activates, either:

47

48

1. Don't specify `spring.datasource.type` (it will default to Druid)

49

2. Explicitly set it:

50

51

```properties

52

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

53

```

54

55

### Configuration Properties Integration

56

57

The auto-configuration enables two main property classes:

58

59

```java { .api }

60

/**

61

* Standard Spring Boot DataSource properties

62

* Used as fallback when Druid-specific properties are not set

63

*/

64

@EnableConfigurationProperties(DataSourceProperties.class)

65

66

/**

67

* Druid-specific configuration properties

68

* Takes precedence over standard DataSource properties

69

*/

70

@EnableConfigurationProperties(DruidStatProperties.class)

71

```

72

73

### Component Import Strategy

74

75

The auto-configuration uses `@Import` to conditionally include related configuration:

76

77

```java { .api }

78

@Import({

79

DruidSpringAopConfiguration.class, // AOP monitoring integration

80

DruidStatViewServletConfiguration.class, // Web monitoring console

81

DruidWebStatFilterConfiguration.class, // Web statistics filter

82

DruidFilterConfiguration.class // Various Druid filters

83

})

84

```

85

86

Each imported configuration class has its own conditional logic, so they only activate when their specific conditions are met.

87

88

### Auto-Configuration Ordering

89

90

The configuration is explicitly ordered to run before Spring Boot's default DataSource auto-configuration:

91

92

```java { .api }

93

@AutoConfigureBefore(DataSourceAutoConfiguration.class)

94

```

95

96

This ensures that if Druid conditions are met, the Druid DataSource will be created instead of Spring Boot's default DataSource.

97

98

### Conditional Logic Summary

99

100

The auto-configuration will create a DruidDataSourceWrapper bean when ALL of the following conditions are true:

101

102

1. **Property Condition**: `spring.datasource.type` is either unset or set to `com.alibaba.druid.pool.DruidDataSource`

103

2. **Class Condition**: `DruidDataSource.class` is available on the classpath

104

3. **Bean Condition**: No existing beans of type `DruidDataSourceWrapper`, `DruidDataSource`, or `DataSource` are present

105

106

**Configuration Override:**

107

108

If you need to disable the auto-configuration entirely, you can exclude it:

109

110

```java

111

@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)

112

public class Application {

113

// ...

114

}

115

```

116

117

Or in `application.properties`:

118

119

```properties

120

spring.autoconfigure.exclude=com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure

121

```