Post thumbnail

Lombok: 너네 Data class 얼마든지 써~ 왜냐면 나는 부럽지가 않어

· by 박승재

Lombok은 Getter/Setter 등 반복되는 코드를 어노테이션(Annotation)을 이용해 자동으로 작성해주는 Java 라이브러리입니다.

Kotlin의 Data class와 유사하지만 더 많은 기능을 제공합니다.

Lombok을 사용함으로써 반복되는 코드를 줄이고 가독성을 향상시킬 수 있지만, 반복되는 코드를 숨김으로써 직관성이 떨어지기에 호불호가 있을 수 있습니다.

설치

Gradle에서는 플러그인을 이용해 설치하는 것을 권장합니다.

Gradle 설치 방법 참고: Gradle과 함께 Spring Boot 시작하기

plugins {
  id "io.freefair.lombok" version "6.4.3"
}

참고: Gradle Plugin:io.freefair.lombok

플러그인을 사용할 수 없는 경우, dependencies를 이용해 추가합니다.

repositories {
  mavenCentral()
}

dependencies {
  compileOnly 'org.projectlombok:lombok:1.18.24'
  annotationProcessor 'org.projectlombok:lombok:1.18.24'

  testCompileOnly 'org.projectlombok:lombok:1.18.24'
  testAnnotationProcessor 'org.projectlombok:lombok:1.18.24'
}

Maven에서는 아래와 같이 추가합니다.

<dependencies>
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version>
    <scope>provided</scope>
  </dependency>
</dependencies>

사용

@Getter/@Setter

클래스 멤버 변수의 Getter/Setter 함수를 자동으로 작성합니다.

public class Example {
    @Getter @Setter
    private int number = 10;
}

@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor

클래스 멤버 변수를 바탕으로 생성자를 작성합니다.

@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
public class Example {
    @NonNull private int a = 10;
    private int b = 20;
}

@EqualsAndHashCode

객체 비교에 사용되는 equalshashCode 함수를 작성합니다.

@EqualsAndHashCode
public class Example {
    private int number = 10;
}

@ToString

클래스 이름과 멤버 변수 값을 출력하는 toString 함수를 작성합니다.

@ToString
public class Example {
    private int number = 10;
}

@Data

클래스에 @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 적용하고,

모든 멤버 변수에 @Getter를, Null이 아닌 멤버 변수에 @Setter를 적용합니다.

@Data
public class Example {
    private int number = 10;
}

@Value

수정할 수 없는 @Data입니다.

@Value
public class Example {
    private int number = 10;
}