Spring-自动装配-Druid的核心jar包和对应的Starter包是如何配合然后实现自动装配的
Druid 的核心 JAR 包和对应的 Spring Boot Starter 包通过以下方式配合实现自动装配:
1. 核心组件分工
| 组件 | 作用 |
|---|---|
| Druid 核心 JAR 包 | 提供数据库连接池实现、SQL 监控、防御注入等核心功能(如 druid-1.2.8.jar)。 |
| Druid Spring Boot Starter | 封装自动配置逻辑,将 Druid 无缝集成到 Spring Boot 应用(如 druid-spring-boot-starter-1.2.8.jar)。 |
2. 自动装配流程
步骤 1:引入 Starter 依赖
在 pom.xml 中添加 Starter:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
步骤 2:Spring Boot 加载自动配置类
-
入口文件:
Starter 包中的META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports声明自动配置类:com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
-
自动配置类逻辑:
@Configuration @ConditionalOnClass(DruidDataSource.class) // 当类路径存在 DruidDataSource 时生效 @AutoConfigureBefore(DataSourceAutoConfiguration.class) // 在 Spring Boot 默认数据源配置前执行 @EnableConfigurationProperties(DruidStatProperties.class) // 绑定配置属性 public class DruidDataSourceAutoConfigure { @Bean @ConditionalOnMissingBean public DataSource dataSource() { return new DruidDataSourceWrapper(); // 创建 Druid 数据源实例 } // 配置监控页面(如 /druid/sql.html) @Bean @ConditionalOnProperty("spring.datasource.druid.stat-view-servlet.enabled") public ServletRegistrationBean<StatViewServlet> statViewServlet() { return new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*"); } }
步骤 3:读取配置参数
在 application.yml 中配置 Druid 参数:
3. 关键机制解析
| 机制 | 说明 |
|---|---|
| 条件注解 | @ConditionalOnClass 确保存在 Druid 类时才启用配置,避免冲突。 |
| 配置属性绑定 | @EnableConfigurationProperties 将 application.yml 中的配置注入到 DruidStatProperties 对象。 |
| 覆盖默认数据源 | 通过 @AutoConfigureBefore(DataSourceAutoConfiguration.class) 优先创建 Druid 数据源,替代 Spring Boot 默认的 HikariCP。 |
| 监控 Servlet 注册 | 根据配置动态注册监控页面的 Servlet,提供 SQL 监控、URI 监控等功能。 |
4. 验证自动装配结果
检查 Bean 是否创建
@SpringBootTest public class DruidAutoConfigTest { @Autowired private DataSource dataSource; @Test public void testDataSourceType() { assertThat(dataSource).isInstanceOf(DruidDataSource.class); // 确认数据源类型 } }
访问监控页面
启动应用后,访问 http://localhost:8080/druid/sql.html,输入配置的用户名密码,可查看 SQL 监控统计。
5. 常见问题排查
问题 1:数据源未切换为 Druid
-
原因:未在配置中指定
type: com.alibaba.druid.pool.DruidDataSource。 -
解决:检查
application.yml中的spring.datasource.type配置。
问题 2:监控页面无法访问
-
原因:未启用
stat-view-servlet.enabled或路径冲突。 -
解决:确认配置并检查日志中的 Servlet 注册信息。
问题 3:依赖冲突
-
现象:
NoClassDefFoundError或BeanCreationException。 -
解决:执行
mvn dependency:tree排查冲突依赖,使用<exclusions>排除旧版本。
总结
-
核心 JAR 包:提供 Druid 功能实现。
-
Starter 包:通过自动配置类、条件注解和属性绑定,实现零配置集成。
-
结果:开发者只需添加依赖和配置参数,即可获得功能完备的 Druid 数据源及监控能力。

浙公网安备 33010602011771号