개발/Java

[Java] Lombok이란? @Data, @NoArgsConstructor, @AllArgsConstructor, @Builder 사용하기

하빈H 2023. 1. 27. 13:41

최근에 회사와 개인 프로젝트에서 Lombok을 사용하게 되었다.

단순히 @Data 어노테이션으로 getter, setter 코드 작성하는 걸 줄여주는 것만 있는 줄 알았는데, 생각보다 유용한 기능이 더 많았다.

편리한 만큼 잘못 사용하기도 쉽기도 하니 각 어노테이션별 특징은 더 알아보고 업데이트해야될 것 같다.

 

Lombok이란?

여러가지 어노테이션을 제공하여 반복되는 소스코드를 컴파일 과정에서 자동으로 생성해주는 Java 라이브러리이다.

 

@Data

사용 방법 : https://projectlombok.org/features/Data

 

@Data

 

projectlombok.org

 

@NoArgsConstructor, @AllArgsConstructor

사용 방법 : https://projectlombok.org/features/constructor

 

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor

 

projectlombok.org

@Builder

사용 방법 : https://projectlombok.org/features/Builder

 

@Builder

 

projectlombok.org

 

@Builder 사용 예

기존에 일부 변수를 이용해 만든 생성자를 이용해 Code param = new Code(comCd, defaultYn);와 같이 작성하던 코드를 아래와 같은 방식으로 작성할 수 있다.

생성자에 들어갈 변수가 달라질 때 매번 생성자를 새로 만들어줄 필요가 없고, 순서를 혼동해서 다른 값을 매핑하는 문제를 줄일 수 있다.

Code param = Code.builder()
                .comCd(comCd)
                .defaultYn(defaultYn).build();
        
List<Code> resultList = codeService.getCodeList(param);
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class Code {

    private String comGrpCd;
    private String comCd;
    private String cdNm;
    private String cdDesc;
    private String defaultYn;
    private String sort;
    private String delYn;
    private String creDt;
    private String regUser;
    private String modDt;
    private String modUser;
}

'개발 > Java' 카테고리의 다른 글

[Java] 람다식  (0) 2022.09.05
[Java] 추상 클래스와 추상 메서드  (0) 2022.09.01
[Java] String to Array, String to Char  (0) 2022.08.23
[Java] 배열과 메모리  (0) 2022.08.22
[Java] 자료형  (0) 2022.08.22