본문 바로가기

Various Error

[Eclipse] Lombok 설정 시 주의 사항

문제 발생
  1. Ajax를 이용하여 JSON 형태로 데이터를 전송
  2. @RequestBody와 클래스를 이용하여 자동으로 매핑이 될 수 있도록 DTO 클래스 생성
  3. DTO 클래스와 Ajax에서 전송하는 데이터를 일치시켜 멤버 변수 : Key값을 동일하게 맞췄음에도 불구하고 null 데이터만 수신
문제 원인
  • Eclipse는 Lombok을 바로 지원하지 않기 때문에 추가적인 설정이 필요

 

문제 해결
  1. pom.xml에 lombok dependency 추가
  2. Maven Dependencies에서 lombok을 찾아 경로 확인
  3. 해당 경로로 찾아가서 lombok.jar 파일 실행
  4. update/install 클릭 후 install Successful → Quit Installer 클릭
  5. 이클립스 재시작 후 Lombok 설정한 클래스의 Outline 확인
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>


  • Lombok dependency만 추가하면 @Setter, @Getter 같은 어노테이션 인식은 문제가 되지 않음
  • 하지만, 오히려 오류가 발생하지 않기 때문에 별도로 Lombok을 설치해주어야한다는 것을 몰라서 문제를 해결하는데 훨씬 더 오래 걸린 것 같음
  • 만약, lombok.jar를 설치하지 않았다면 outline에는 멤버 필드만 표시되었던 것으로 기억함


해당 문제에 대해서 ChatGPT에게 질문
  • Eclipse는기본적으로 Lombok을 바로 지원하지 않고
  • IntelliJ IDEA는 Maven 또는 Gradle 의존성만 추가해도 Lombok을 자동으로 인식하도록 설계가 되어 있다고 함

 

Eclipse에서 Lombok이 바로 동작하지 않는 이유
  • Eclipse는 기본적으로 Annotation Processing(어노테이션 처리) 기능이 비활성화되어 있음
  • 또한, Lombok 처럼 어노테이션 기반으로 코드를 생성하는 라이브러리를 자동으로 인식하지 않기 때문에 Lombok을 사용하기 위해서는 명시적으로 Eclipse에게 알려주어야 함
    → 명시적으로 알려주는 것이 위의 해결 방법(jar 파일 실행하여 설치)

 

Lombok 이외의 어노테이션 기반으로 코드를 생성하는 라이브러리는 일일이 jar 파일을 설치?

대답은 No

 

Lombok은 특별한 방식으로 Eclipse와 통합
  • Lombok은 컴파일 타임에 어노테이션을 처리하여 코드를 자동으로 생성
  • 이를 위해 Eclipse의 컴파일러와 직접 통합되어야하기 때문에 추가 설정이 필요
  • 반면, 다른 대부분의 어노테이션 기반 라이브러리(Hibernate Validator, Spring Boot Annotations)는 컴파일러와 통합되지 않고 런타임에 동작

다른 라이브러리는 보통 추가 설정 없이 동작
  • 대부분의 어노테이션 기반 라이브러리는 Maven/Gradle 의존성만 추가하면 Eclipse에서도 자동으로 동작
  • 다음의 라이브러리들은 Eclipse의 Annotation Processing 활성화만 되어 있으면 추가 설치 없이 작동
    • Spring Boot : @Controller, @Service, @Autowired 등은 Eclipse에서 바로 인식
    • JPA/Hibernate : @Entity, @Column, @GeneratedValue 등도 별도 설정 없이 Eclipse에서 처리
    • Validation API : @NotNull, @Size, @Pattern 같은 어노테이션도 추가 설정 없이 사용 가능
Lombok처럼 추가 설정이 필요한 경우

다음과 같은 라이브러리들은 Lombok처럼 별도의 설정이나 플러그인이 필요할 수 있음

  • MapStruct : JavaBean 간의 매핑을 자동 생성하는 라이브러리로, Lombok과 마찬가지로 컴파일러 플러그인 설정이 필요
  • Immutables : 불변 객체를 생성하는 라이브러리로, Lombok처럼 Eclipse 설정이 필요할 수 있음

 

Annotation Processing 활성화
  • 어노테이션 기반 라이브러리를 사용할 때 추가적인 문제가 발생하지 않게 하기 위해 다음의 설정을 미리 해두는 것을 권장
  • 프로젝트 우 클릭 → Properties → 검색창 'ann' 입력 → Java Compiler → Annotation Processing 3개 항목 체크