Spring Boot의 MySQL을 dependencies에 추가하기

민준·2025년 3월 29일

성장

목록 보기
2/2
post-thumbnail

Hackathon을 하다가 dependencies에 MySQL을 적용하는데 2가지 방법이 있어 헷갈려 알아봤다.

  • 보통 dependencies에 추가할때 Add Starters를 통해서 추가한다.

  • runtimeOnly 'com.mysql:mysql-connector-j'

  • 하지만 MySQL에 버전을 명시하지 않으면 에러가 나는 경우가 있다는 동료의 말에 따라 기존내용을 지우고 아래 내용을 추가했다.

  • implementation 'mysql:mysql-connector-java:8.0.33'

  • Hackathon때에는 결과를 내는것이 목적이다보니 동료의 말에 따라갔지만 정확이 무엇을 사용해야 하는지 그리고 이 둘의 차이가 너무나도 궁금했다.

1. runtimeOnly 'com.mysql:mysql-connector-j'

runtimeOnly 'com.mysql:mysql-connector-j'

  • runtimeOnly을 사용하면 애플리케이션 실행(Runtime)에만 MySQL 드라이버가 필요함을 명시하는것.

  • 빌드 과정에서 사용되지 않고, 실행할 때만 MySQL Connector가 로드됨.

  • Spring Boot에서 공식적으로 권장하는 방식(Spring Boot 2.5이상)

  • spring-boot-starter-data-jpa 또는 spring-boot-starter-jdbc가 있는 경우 자동으로 적절한 버전의 MySQL 드라이버를 참조한다.

  • 또한 버전을 명시하지 않아도 Spring Boot의 자동 관리 시스템에 의해 버전이 자동으로 설정됨.

2. mysql:mysql-connector-java:8.0.33

`mysql:mysql-connector-java:8.0.33'

  • implementation을 사용하면 MySQL 드라이버가 컴파일 타임에도 필요하게 됨.

  • mysql:mysql-connector-java는 MySQL 공식 패키지 네이밍 방식.

  • 이전 방식의 MySQL JDBC 드라이버. (Spring Boot 2.5 이상에서는 권장되지 않음.)

  • 모든 코드에서 MySQL Connector를 직접 참조할 수 있음.

  • 반드시 버전을 직접 지정해야 하므로, 유지보수가 번거로울 수 있음.

  • Spring Boot에서 관리되지 않으므로, 업데이트 시 직접 버전을 변경해야 함.

3. 결론!

  • Spring Boot 최신 버전(3.x)을 사용하고 있다면 com.mysql:mysql-connector-j(1번)를 사용하는 것이 정답!
    → runtimeOnly 'com.mysql:mysql-connector-j' 를 사용하면 Spring Boot가 자동으로 MySQL 드라이버 버전을 관리해 주기 때문.

  • 반면, mysql:mysql-connector-java:8.0.33(2번)은 버전을 직접 지정해야 해서 관리가 번거롭고 충돌 위험이 있음.
    → Spring Boot의 자동 의존성 관리 기능을 활용하지 못하기 때문

0개의 댓글