如何修復異常:無法載入驅動程式類別:Spring Boot 中的 com.mysql.jdbc.driver
1. 簡介
當將 MySQL 與 Spring Boot 整合時,我們通常會依賴 Spring Boot 的自動設定和 JDBC 支援來連接資料庫。然而,遇到配置問題並不少見,尤其是在使用過時的參考時。其中一個例外是:
Cannot load driver class: com.mysql.jdbc.Driver
在這個簡短的教程中,我們將了解為什麼會發生此錯誤,如何修復它,並測試我們的設定以確保資料庫連接正常運作。
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
如果我們繼續在較新版本的 MySQL 驅動程式中使用舊的類別名,應用程式將無法啟動並出現ClassNotFoundException
。
3. 解決問題
為了解決這個問題,我們需要更新我們的 Spring Boot 配置和專案中使用的依賴項。
3.1.使用正確的驅動程式類
第一步是在application.properties
或application.yml
檔案中以新的驅動程式類別取代舊的驅動程式類別。
我們可以使用application.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
或者我們可以使用application.yml
檔案來完成:
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
屬性。
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 時。
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 資料庫的連線。
5. 結論
在本文中,我們檢查了 Spring Boot 中Cannot load driver class: com.mysql.jdbc.Driver
異常的原因,並示範如何透過更新驅動程式類別名稱和專案相依性來修復它。我們還編寫了一個簡單的測試來確認修復是否能如預期運作。
在 Spring Boot 中使用 JDBC 時,確保依賴項和配置之間的相容性是關鍵。要了解有關此主題的詳細信息,我們可以參考官方 Spring Boot 文件和MySQL Connector/J 發行說明。
與往常一樣,該實作的原始程式碼可在 GitHub 上取得。