본문 바로가기

Problem Solving

[Springboot]bundle.gradle 의존성 주입 시 에러 발생 대응

Springboot 프로젝트를 진행하다보면, 의존성 주입을 하게 됩니다.

Gradle을 Build로 사용할 경우를 예로 들어봅니다. 

 

문제 상황

MySQL 을 연결하고자 mysql Connector 의존성을 주입 하였습니다. 

bundle.gradle 파일을 열고 dependencies 부분에 아래와 같이 책/강좌에 나오는데로 입력했습니다.

 

프로젝트를 실행 하면, 아래와 같이 mysql-connector-java 를 찾지 못하고 에러가 발생합니다.

mysql-connector-java를 못찾습니다.

 

해결방법

build.gradle 의 의존성 주입시 주의 해야할 부분이 있습니다. 

  1. 의존성 범위 변경 : complieOnly 가 아니라, implementation 으로 변경합니다.
    compileOnly 와 implementation 은 어떤 차이 점이 있을까요?  compileOnly는 말 그대로 의존성을 complie 시점에만 주입하고, implementation은 compile 및 runtime에도 주입을 한다는 뜻입니다.
    MySQL connector 는 런 타임(run-time)에도 필요하기 때문에 범위를 변경합니다.

  2. 명시적으로 버전을 지정 : 버전 정보를 정확하게 입력합니다.
    mysql-connector-java 가 아니라, 최신 버전을 적어서 버전을 명확하게 합니다. mysql-connector-java:8.0.28
    명시적으로 버전을 정하기 때문에 이후 의존성 주입 부분이 최신 버전과 충돌이 생기기 않을것 같습니다.
    항상 최신 버전을 주입하면, 과거 버전을 사용하도록 된 소스는 에러를 발생 할 수 있습니다.