롬복(Lombok) 사용 가이드

Rm·2021년 3월 19일
0

Lombok이란?

DTO, VO, Entity와 같은 클래스에서 기계적으로 작성하는 코드 getter, setter, Tostring, HashCode 등과 같은 코드를 깔끔하게 작성하게 도와주는 도구입니다.

Lombok 사용 가이드

롬복이 간편한만큼 장점만 있는것은 아닙니다.
개발자의 개발환경에 Lombok이 설치되어있어야하는 단점과 손쉽게 쓸 수 있어 어노테이션을 난발하다가는 알 수 없는 예기치못한 에러가 발생 할 수 있습니다.
그러게 위해서는 정확한 Lombok 사용가이드를 알아야겠죠?

Lombok 어노테이션 정리

@Data : 다음 어노테이션을 모두 한번에 처리 한다.

  • @ToString

  • @EqualsAndHashCode

  • @Getter(모든 필드)

  • @Setter(모든 필드-final로 선언되지 않은)

  • @RequiredArgsConstructor

종합 선물 세트처럼 보이는 @Data 어노테이션은 사실 간편해보이지만 서비스 기능명세와는 다르게 동작할 수 있다는 리스크를 가지고 있다.

예시로 @Setter 어노테이션은 자동으로 Setter 메소드를 생성해주는데 변경사항이 발생하지 않는 Entity에도 적용을 해버리기 때문에 예기치못한 상황이 발생할 가능성을 품고있어 최대한 사용은 지양해야한다.

그렇다면 어노테이션을 하나씩 살펴보도록 하자.

@NonNull Null : 값이 될 수 없다는 것을 명시합니다. NullPointerException에 대한 대비책이 될 수 있습니다.

@Cleanup : 자동으로 close() 메소드를 호출합니다.

@Getter/@Setter : 코드가 컴파일 될 때, Getter/Setter 메소드를 생성합니다.

@ToString : toString() 메소드를 생성합니다. @ToString(exclude={"제외할 값"}) 처럼 원하지 않는 속성은 제외할 수 있습니다.

@EqualsAndHashCode : 해당 객체의 equals()와 hashCode() 메소드를 생성합니다.

@NoArgsConstructor : 파라미터를 받지 않는 생성자를 만들어 줍니다.

@RequiredArgsConstructor : 지정된 속성들에 대해서만 생성자를 만듭니다.

@AllArgsConstructor : 모든 속성에 대해서 생성자를 만들어 냅니다.

@Value : 불변 클래스를 생성할 때 사용합니다.

@Builder : 빌더 패턴을 사용할 수 있도록 코드를 생성합니다.

@SneakyThrows : 예외 발생 시 Throwable 타입으로 반환합니다.

@Syncronized : 메소드에서 동기화를 설정합니다.

@Getter(lazy=true) : 동기화를 이용해서 최초 한번만 getter를 호출합니다.

Builder 패턴이란?

@Builder 어노테이션을 사용하는 일이 많은데 builder 패턴에 대해 잘모르고 있어서 추가적으로 학습을 진행했습니다.

빌더패턴은 디자인패턴 중 하나로 생성과 분리를 목적으로하는 패턴이라고합니다.

참고 문헌 : https://lemontia.tistory.com/483

profile
우당탕 개발자 성장기

0개의 댓글