在 Java Web 开发中,Spring Boot 凭借其简洁的配置和强大的功能成为主流框架,而 MySQL 作为常用的关系型数据库,与 Spring Boot 的结合十分紧密。Druid 是阿里巴巴开源的一款高性能数据库连接池,它提供了丰富的监控和扩展功能,能有效提升应用程序与数据库交互的性能和稳定性。本文将详细介绍如何在 Spring Boot 2 和 Spring Boot 3 中分别整合 MySQL 和 Druid,涵盖不同版本的依赖引入、配置细节以及常见问题解决。
使用 Spring Initializr(https://start.spring.io/)创建一个基础的 Spring Boot 2 项目,选择 Web、JDBC、MySQL Driver 等必要依赖。
在项目的 pom.xml 文件中添加 Druid 依赖:
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druid-spring-boot-starterartifactId>
<version>1.2.8version>
dependency>
这里选择 1.2.8 版本,它与 Spring Boot 2 兼容性良好,能满足大多数场景需求,可根据实际情况调整版本号。
# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Druid连接池配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.validation-query=SELECT 1
这些配置项分别设置了数据库连接地址、用户名、密码、驱动类,以及 Druid 连接池的初始大小、最小空闲连接数、最大活跃连接数等关键参数,确保数据库连接的高效利用和健康检查。
Spring Boot 会自动装配 Druid 数据源,在代码中可直接通过@Autowired
注入DataSource
进行数据库操作,例如在JdbcTemplate
或自定义的Repository
类中:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class UserRepository {
private final JdbcTemplate jdbcTemplate;
@Autowired
public UserRepository(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
// 数据库操作方法
}
同样借助 Spring Initializr 创建 Spring Boot 3 项目,确保包含相关 Web 和数据库依赖。
在 pom.xml 添加 Druid 适配 Spring Boot 3 的依赖:
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druid-spring-boot3-starterartifactId>
<version>1.2.18version>
dependency>
注意版本升级,1.2.18 针对 Spring Boot 3 做了适配优化,保证功能正常运作。
以 properties 为例:
# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Druid连接池配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.validation-query=SELECT 1
配置项含义与 Spring Boot 2 类似,但底层由于 Spring Boot 3 的一些自动配置调整,Druid 能更无缝集成到新的生态体系中。
代码层面注入DataSource
方式不变,如:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class ProductRepository {
private final JdbcTemplate jdbcTemplate;
@Autowired
public ProductRepository(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
// 业务方法
}
如果出现类找不到或配置不生效,首先检查 Druid 与 Spring Boot 版本是否匹配,仔细核对官方文档的适配说明,必要时调整依赖版本。
若应用频繁报连接超时错误,适当调大max-active
参数,同时检查数据库服务器负载、网络状况,确保资源充足、通信顺畅。
Druid 提供了内置监控页面,默认路径为/druid/index.html
,若无法访问,检查是否在配置文件中开启了 WebStatFilter,如:
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.stat-view-servlet.enabled=true
通过以上步骤,成功在 Spring Boot 2 和 Spring Boot 3 项目中整合 MySQL 数据库与 Druid 连接池,利用 Druid 强大的性能调优和监控能力,保障数据库交互高效稳定,助力构建高质量企业级应用,开发者可根据项目实际需求灵活定制配置,应对不同业务场景挑战。后续可深入探索 Druid 的高级功能,如 SQL 防火墙、慢查询日志分析等,进一步提升系统健壮性。