Lombok 사용 시 주의할 점
스프링(Spring)

Lombok 사용 시 주의할 점

반응형

@Data 사용 지양

해당 어노테이션은 @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor을 모두 갖춘 강력한 어노테이션임

무분별한 사용은 오히려 부작용을 가져올 수 있음(Setter 남용 금지 등)

 

 

순환 참조 대비

두 객체가 양방향 연관관계 일때, toString()을 호출하면 무한 순환 참조의 문제가 발생한다. 따라서 @ToString 어노테이션을 통해 제외시켜줘야 한다.

@ToString(exclude = "대상객체")

@NoArgsConstructor 접근 권한 최소화

기본 생성자를 만들 때는 접근 권한을 protected로 설정한다.

@NoArgsConstructor(access = AccessLevel.PROTECTED)

굳이 외부에서 생성을 할 수 있도록 열어둘 필요가 없으며, 객체 생성에 대한 안전성을 보장할 수 있다. 객체 내부에서 생성자를 하나로 만들어 활용하고, 이때 @Builder를 통해 사용하자

@Builder 사용 시 매개변수 최소화

만약 클래스 상단에 @Builder를 사용하면, 해당 객체에서 @AllArgsConstructor 어노테이션을 붙인 효과를 발생시킨다. 따라서 해당 객체의 모든 필드에 대한 매개변수를 받는 기본 생성자를 만든다.

하지만 객체 생성 시 모든 필드에 대한 매개변수 활용은 방지해야할 것이다. (createAt, updateAt 등 따로 다른 어노테이션이 담당하고 있는 필드의 경우)

따라서 객체 내부의 생성자를 만들 때 @Builder로 설정하고, 객체 생성 시 받아야 할 데이터만 매개변수로 넣어 만들 수 있도록 하자

 

 

[참고 자료]

반응형