2. 1. 问题背景
在 Spring Boot 集成 MySQL 时,我们通常依赖其自动配置和 JDBC 支持来连接数据库。但配置不当可能导致异常,尤其是使用过时配置时,常见错误如下:
Cannot load driver class: com.mysql.jdbc.Driver
本文将分析此错误原因、解决方案,并验证数据库连接有效性。
3. 2. 错误根源
这个问题的核心在于使用了过时的 MySQL 驱动类。在旧版 MySQL JDBC 驱动(Connector/J)中,常用以下驱动类:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
但从 MySQL Connector/J 8.0 开始,该类已被废弃并移除。正确的驱动类应为:
com.mysql.cj.jdbc.Driver
⚠️ 若在新版驱动中使用旧类名,应用启动时会抛出 ClassNotFoundException
。
4. 3. 解决方案
需同时更新 Spring Boot 配置和项目依赖。
4.1. 3.1 使用正确的驱动类
在 application.properties
或 application.yml
中更新驱动类名:
properties 方式:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
yaml 方式:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secret
driver-class-name: com.mysql.cj.jdbc.Driver
✅ 简化方案:Spring Boot 能自动检测类路径中的驱动类。若使用正确版本的 MySQL 驱动,可完全省略 driver-class-name
属性。
4.2. 3.2 更新依赖版本
确保项目使用最新稳定版 MySQL JDBC 驱动:
Maven 配置:
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>9.2.0</version>
</dependency>
Gradle 配置:
implementation("com.mysql:mysql-connector-j:9.2.0")
❌ 使用过时驱动版本可能导致兼容性问题,尤其搭配新版 Spring Boot 或 Java 时。
5. 4. 验证修复效果
更新配置和依赖后,需验证数据库连接是否正常。可通过集成测试检查 DataSource
工作状态:
@SpringBootTest
class LoadDriverLiveTest {
@Autowired
private DataSource dataSource;
@Test
void whenConnectingToDatabase_thenConnectionShouldBeValid() throws Exception {
try (Connection connection = dataSource.getConnection()) {
assertNotNull(connection);
}
}
}
✅ 测试通过表明 Spring Boot 已成功加载驱动类并建立 MySQL 连接。
6. 5. 总结
本文分析了 Spring Boot 中 Cannot load driver class: com.mysql.jdbc.Driver
异常的成因,演示了通过更新驱动类名和项目依赖修复问题的方法,并通过测试验证了修复效果。
在 Spring Boot 中使用 JDBC 时,确保依赖与配置的兼容性至关重要。深入理解可参考:
完整实现代码可在 GitHub 获取。