lombok 의존성 주입

박의진·2025년 7월 2일

스프링부트 lombok 라이브러리 의존성 주입 시에
implement로 주입하는게 아니라 compileOnly로 의존성을 주입해야한다.

이유는 ?

  • lombok은 컴파일때 필요한 도구지 런타임까지 끌고갈 필요 없음

✅ 핵심 개념부터 정리

Gradle 설정 의미
implementation 컴파일 + 런타임 모두 필요
compileOnly 컴파일할 때만 필요, 런타임에는 필요 없음
annotationProcessor 컴파일 시 애노테이션 처리용 도구 등록

✅ 그럼 Lombok은?

Lombok은 컴파일 타임에만 필요한 도구
즉, 소스 코드에 실제 메서드(getter/setter, 등)를 생성해주는 역할만 하고, 앱이 실행될 때는 전혀 필요 없음

✅ 왜 실제 배포에 문제 없냐면?

📌 1. Lombok은 컴파일 시점에만 작동해
@Getter, @Setter, @Builder, @EqualsAndHashCode 같은 애노테이션들은
→ 컴파일할 때 자동으로 자바 코드로 변환됨
즉, 실제 컴파일 결과물(.class) 안에는 Lombok이 아예 없음
lombok.jar이 앱에 포함되지 않음 → 런타임엔 존재조차 안 함

📌 2. 배포 파일 (예: .jar, .war, .aab, .apk) 안에도 없음
Gradle이 compileOnly으로 설정된 라이브러리는
→ classpath에는 포함되지만,
→ build/libs/my-app.jar 같은 배포 파일엔 포함되지 않음

profile
주니어 백엔드 개발자의 개발 log💻

0개의 댓글