[TIL 52일차] JdbcTemplate Exception encountered during context initialization 에러

이건·2024년 8월 10일

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jdbcMappingContext' defined in class path resource [org/springframework/boot/autoconfigure/data/jdbc/JdbcRepositoriesAutoConfiguration$SpringBootJdbcConfiguration.class]: Unsatisfied dependency expressed through method 'jdbcMappingContext' parameter 1: Error creating bean with name 'jdbcCustomConversions' defined in class path resource [org/springframework/boot/autoconfigure/data/jdbc/JdbcRepositoriesAutoConfiguration$SpringBootJdbcConfiguration.class]: Failed to instantiate [org.springframework.data.jdbc.core.convert.JdbcCustomConversions]: Factory method 'jdbcCustomConversions' threw exception with message: Error creating bean with name 'jdbcDialect' defined in class path resource [org/springframework/boot/autoconfigure/data/jdbc/JdbcRepositoriesAutoConfiguration$SpringBootJdbcConfiguration.class]: Failed to instantiate [org.springframework.data.relational.core.dialect.Dialect]: Factory method 'jdbcDialect' threw exception with message: Failed to obtain JDBC Connectio

강의대로 잘 따라한거 같은데 에러가 발생했다...

이 오류 메시지는 Spring Boot 애플리케이션의 컨텍스트 초기화 중 발생한 문제로, JDBC 연결을 얻는 데 실패하여 여러 빈이 생성되지 못했음을 나타낸다. 구체적으로 jdbcMappingContext와 관련된 빈들이 초기화되지 못하고 있는 상황이다.

이 문제를 해결하기 위한 방법은 6가지 정도가 있는데...

  1. JDBC 연결 설정 확인:

    • application.properties 또는 application.yml 파일에서 JDBC URL, 사용자명, 비밀번호가 올바르게 설정되었는지 확인한다.
    • 데이터베이스 서버가 실행 중인지, 네트워크 연결이 정상인지 확인한다.
  2. 데이터베이스 드라이버:

    • 사용하는 데이터베이스에 맞는 JDBC 드라이버가 의존성으로 포함되어 있는지 확인한다. 예를 들어, MySQL을 사용하는 경우 mysql-connector-java 의존성이 포함되어야 한다.
  3. JDBC URL 형식:

    • JDBC URL 형식이 정확한지 확인해야 한다. 데이터베이스에 따라 필요한 형식이 다를 수 있다. 예를 들어, MySQL의 경우 jdbc:mysql://<host>:<port>/<database> 형식이어야 한다.
  4. 빈 정의 및 설정:

    • JdbcRepositoriesAutoConfiguration과 관련된 설정이 올바르게 되어 있는지 확인해야 한다.
  5. 로그 확인:

    • 초기화 단계에서 발생한 다른 경고나 오류 메시지를 확인하여 추가적인 정보를 얻는다. 데이터베이스 연결 문제와 관련된 세부 로그가 있을 수 있다.
  6. 데이터베이스 접근 권한:

    • 데이터베이스 사용자에게 필요한 권한이 부여되었는지 확인해야 한다. 연결 시 권한 부족으로 인해 실패할 수 있다.

다 시도했는데 결론은...

강의의 코드스니펫에

spring.datasource.url=jdbc:mysql://localhost:3306/memo
spring.datasource.username=root
spring.datasource.password={비밀번호}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

이런식으로 되어있길래 괄호안에 비밀번호를 넣는 것인줄 알았는데 괄호도 지우고 써야한다.

spring.datasource.url=jdbc:mysql://localhost:3306/memo
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

이런식으로 쓰니 정상적으로 실행되었다.

0개의 댓글