[SpringBoot]アプリ起動時に「UnsatisfiedDependencyException: Error creating bean with name ‘sqlSessionFactoryBean’」のエラーが出る

事象

Spring Bootアプリを起動すると以下のエラーが発生する。

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2023-10-12 11:50:07.673 ERROR 4640 --- [           main] o.s.boot.SpringApplication               : Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sqlSessionFactoryBean' defined in class path resource [training/spa/api/config/DataConfig.class]: Unsatisfied dependency expressed through method 'sqlSessionFactoryBean' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.RuntimeException: Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Thread context classloader

環境

  • Java 11
  • Gradle 8.3
  • SpringBoot 3.0.0
  • mybatis-spring-boot-starter 2.2.2

原因

考えられる原因は以下の2つ。

  • MySQLのJDBCドライバがクラスパスにない
  • MySQLのJDBCドライバのバージョンが古い
  • mybatis-spring-boot-starterのバージョンがSpringBootのバージョンと合っていない

解決策

1. MySQLのJDBCドライバをクラスパスに追加する

build.gradleを確認してJDBCドライバが登録されているか確認する。(下記はMySQLのJDBCドライバをクラスパスに追加する例)

build.gradle

implementation 'mysql:mysql-connector-java'

2. MySQLのJDBCドライバのバージョンを確認する

build.gradleを確認してJDBCドライバのバージョンが合っているか確認する。

build.gradle

implementation 'mysql:mysql-connector-java:8.0.27'

3. mybatis-spring-boot-starterのバージョンをSpringBootのバージョンに合わせる

SpringBootのバージョンに合わせてmybatis-spring-boot-starterのバージョンを変更する。現時点においてSpring Boot3でmybatis-spring-boot-starterを利用したい場合には2.3.0-SNAPSHOTを利用すれば良さそうです。

build.gradle

implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.0-SNAPSHOT'

mybatis-spring-boot-starter はまだ Spring Boot 3 には対応していないと考えられます。(2022年10月現在)Spring Boot のバージョンを安定板(2.7.5 など)にして試してみてください。

コメント

コメントを残す

マークダウン形式でコメントを入力できます。

アップロードファイルの最大サイズ: 512 MB。 画像, 音声, 動画, 文書, スプレッドシート, 対話型, テキスト, アーカイブ, コード, その他 をアップロードできます。 Youtube、Facebook、Twitter および他サービスへのリンクは自動的にコメント内に埋め込まれます。 ここにファイルをドロップ

プロフィール背景
Ryosuke
Ryosuke

ITエンジニア & 講師

クラウドネイティブやアーキテクチャ設計の講師として活動しながら、ITエンジニアのDXを推進するために新しい技術やベストプラクティスを常に学び、エンジニアの生産性と開発品質の向上に貢献することを目指しています。猫5匹飼っています。山奥のポツンと一軒家に住んでいて、事務所は海の近くです。