Error

[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

Uheeking 2024. 6. 5. 10:42
반응형

👩🏻‍💻 문제 발생

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대로-변경시-주의-사항

https://hunit.tistory.com/410

https://www.inflearn.com/questions/686939/caused-by-org-springframework-beans-factory-beancreationexception-error-creati

https://greensky0026.tistory.com/67

반응형