티스토리 뷰

분리수거 대기중

Lombok

청소부 2019. 3. 7. 10:24


1. 개요

- 자바 언어와 spring framework를 이용하여 개발

- 도메인 객체 생성 시 setter method, getter method, toString method 등을 만들게 됨

  이로 인해 클래스 파일의 길이가 길어짐

- 어노테이션을 통해 필드 내에 메서드를 자동생성해줌


2. 내용

1) @Getter: getter method를 생성해줌 (단, 클래스 레벨에 선언할 경우 모든 필드에 생성됨)

2) @Setter: setter method를 생성해줌 (단, 클래스 레벨에 선언할 경우 모든 필드에 생성됨)

3) @ToString: toString method를 생성해줌

4) @EqualsAndHashCode: equals method와 hashCode method를 생성해줌

 - callSuper에 true, false로 속성 설정 가능

 - callSuper = true: 부모 클래스 필드값도 동일한지 체크

 - callSuper = false: 자신 클래스의 필드값만 체크(default)

5) @Data

 - 클래스 안에 있는 모든 private 필드에 대해 getter method, setter method를 생성해줌

 - 클래스 안에 @ToString 과 @EqualsAndHashCode를 적용시켜 method override를 해줌      

 - @RequiredArgsConstructor를 지정함

6) @NoArgsConstructor: 기본 생성자를 생성해줌

   @RequiredArgsConstructor: final이나 @nonNull인 필드 값만 생성자를 생성해줌

   @AllArgsConstructor: 모든 필드 값을 파라미터로 받는 생성자를 생성해줌

   ( @NotNull 옵션에 따라 null 체크도 해줌 )


3. 예시


package com.xxx.common.security;
 
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
 
@Data                                       // getter, setter, toString(), hashCode() 생성
@RequiredArgsConstructor                    // final이나 @nonnull인 필드 값의 생성자 생성
@NoArgsConstructor                          // 기본 생성자 생성
@JsonIgnoreProperties(ignoreUnknown=true) // json 데이터를 받아와서 객체로 매핑할 때 클래스에 선언되지 않은 properties가 json에 있는 경우 오류가 발생, 이 오류를 무시하기 위해 true 값 지정
public class ServiceAccessDto {
 
    @NonNull                                // null 체크
    private Long userNo;
    @NonNull
    private String accessUri;
    @NonNull
    private String privilegeFlag;           // C/R/U/D
//  @NonNull
//  @JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ")
//  private ZonedDateTime accessTime;
    private Integer funcNo;
    private String hasPsnlInfoYn;
    @NonNull
    private Integer menuNo;
 
cs


댓글