Code

[Java] 자주 사용되는 Lombok 어노테이션

헨헨7 2024. 6. 22. 19:42

Lombok

    자바에서 Getter, Setter, toString과 같은 반복 메소드 작성을 최소화하도록 돕는 라이브러리다. 어노테이션을 부여하는 것만으로 게터세터, 생성자 구현 등이 가능하여 데이터 클래스 작성이 수월해진다.

 

자주 사용하는 어노테이션

@Getter, @Setter

private로 설정된 클래스 혹은 필드 변수를 외부에서 접근 또는 수정 가능하도록 getter, setter를 자동으로 구현한다.

@NoArgsConstructor

기본 생성자를 자동으로 구현한다.

@AllArgsConstructor

모든 필드에 대해서 초기화 값을 인수로 하는 생성자를 자동으로 구현한다.

@RequiredArgsConstructor

final 필드에 대해서 초기화 값을 인수로 하는 생성자를 자동으로 구현한다.

@ToString

객체가 가지고 있는 값을 문자열로 리턴한다. exclude 옵션을 사용하여 대상 필드를 제외할 수 있다.

@EqualsAndHashCode

equals()메소드와 hashCode()메소드를 생성한다. 두 메소드는 구조적으로 연관되어 있으므로 모순될 수 없어 함께 구현된다.
- equals : 2개의 객체가 동일한지 검사하기 위하여 사용한다.
- hashCode : 런타임 중 객체의 유일한 integer 값을 반환한다.

 

 

 

 

@Value

다음 어노테이션이 부여된 것과 동일한 상태가 된다. 
@Getter
@ToString
@EqualsAndHashCode
@AllArgsConstructor

(1) 클래스 및 각 필드에 final이 부여된다. (2) 각 필드의 가시성이 private 상태가 된다. (3) 해당 객체는 불변 객체가 된다.
    생성 시 생성자에 따라 값이 설정되고, 이후로는 변경이 불가능하다. staticConstructor 옵션을 설정하면, static한 팩토리 메소드가 생성된다. 이 경우 생성자는 private로 변경되므로, 팩토리 메소드를 통해서만 인스턴스를 생성할 수 있다.

@Data

다음 어노테이션을 전부 부여한 것과 동일한 상태가 된다.
@Getter / @Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
@Value