[Error] creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException
👩🏻💻 문제 발생
Spring Boot가 dataSourceMySQL JDBC 드라이버 클래스를 찾을 수 없기 때문에 에 대한 Bean을 생성할 수 없음을 나타낸다.
✔️ 문제 해결
이걸로 삽질을 많이 했는데 대부분 나온 해결책을 정리하고자 한다.
1) MySQL 종속성 추가
com.mysql.cj.jdbc.Driver. 이는 일반적으로 필요한 MySQL 드라이버가 프로젝트의 종속성에 포함되어 있지 않을 때 발생한다. Maven을 사용하는 경우 또는 build.gradle Gradle을 사용하는 경우 MySQL JDBC 드라이버가 있는지 확인해야 한다.
1-1) maven : pom.xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version> <!-- Use the latest version available -->
</dependency>
1-2) gradle : build.gradle
dependencies {
implementation 'mysql:mysql-connector-java:8.0.32' // Use the latest version available
}
2) 구성 확인
application.properties 또는 application.yml파일이 MySQL 데이터베이스에 대해 올바르게 구성되었는지 확인해야 한다.
2-1) maven : application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/yourdbname?serverTimezone=UTC
spring.datasource.username=yourusername
spring.datasource.password=yourpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
6.xx이상으로 변경시키면 serverTimezone파라미터가 필수가 돼서 넣지 않으면 DB연결이 되지 않는다.
2-2) gradle : application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/yourdbname
username: yourusername
password: yourpassword
driver-class-name: com.mysql.cj.jdbc.Driver
구성과 종속성을 추가하고 나서 mysql 드라이버가 프로젝트의 클래스 경로에 올바르게 포함되어 있는지 확인한다. 그리고 나서 아래와 같이 본인의 환경에 맞게 업데이트를 해주면 된다.
- maven : mvn clean install
- gradle : ./gradlew build
→ 그리고 나서 mysql서버 및 java 버전과 호환되는지 확인해야 한다. 기본적으로 최신 버전 하는것이 제일 좋다. 그리고 나서 빌드를 하고 다시 시작하면 다시 잘 작동하는 것을 확인할 수 있다.
그래도 만약에 안된다면 아래의 방법들도 따라하는 것을 추천한다.
3) mysql 드라이버 업데이트하기
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
에서 아래로 업데이트하기
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
기본적으로 최신버전이라면 com.mysql.cj.jdbc.Driver를 써야하는데 위와 같이 쓰는 경우가 존재하므로 cj차이이므로 이가 포함되어 있는지 확인해준다.
아니면 반대로 com.mysql.jdbc.Driver 를 적용해줘야 하는 경우도 존재한다.
- mysql connector 8.0 이상 : com.mysql.cj.jdbc.Driver
- mysql connector 5.xx : com.mysql.jdbc.Driver
3-1) mariaDB driver 변경하기
mariadb를 사용하면 org.mariadb.jdbc.Driver를 사용한다. 이에 대한 오류가 존재하므로 위와 같이 mysql Driver로 교체한다.
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
to
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
4) 띄워쓰기 되어 있는지 확인
spring.datasource.url=jdbc:mysql://localhost:3306/yourdbname?serverTimezone=UTC
spring.datasource.username=yourusername
spring.datasource.password=yourpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
properies 파일 설정을 하면서 각 문장의 맨 뒤에 띄워 쓰기가 적용된 경우도 안된다고 한다. 이를 주의해서 적용해준다. 띄워 쓰기가 된 부분을 삭제하면 된다.
🔗 참고
https://effectivesquid.tistory.com/entry/mysqlconnectorjava-6xx대로-변경시-주의-사항