Lombok Careful Annotation
Lombok Careful Annotation
Lombok Careful Annotation
- Lombok의 annotation은 자바 코딩을 쉽게 도와주지만, 특정 annotation은 부작용이 있어서 사용이 지양됨
@AllArgsConstructor
- 모든 필드를 사용하는 생성자를 만들어줌
- 이 과정에서 동일한 타입의 필드의 순서를 바꾸면 lombok은 생성자의 파라미터 순서를 바꿈
- IDE가 리팩터링을 진행해주지 않으므로, 이 과정에서 값이 잘못된 필드에 들어갈 확률이 높음
- 그러나 같은 타입이기 때문에 오류가 발생하지 않아 알기 어려움
- @RequiredArgsConstructor도 동일한 문제
@NoArgsConstructor
- 아무 필드도 사용하지 않는 생성자를 만들어줌
- final 필드가 있는 경우 생성자를 만들 수 없고 오류가 발생
@EqualsAndHashCode
- 두 객체의 내용이 같은 지(equals), 두 객체 자체가 같은 지(hashcode)를 비교하는 메소드를 생성해줌
- Mutable 객체에 파라미터 없이 사용하게 된다면 hashcode 함수가 제대로 동작하지 않음
@Data
- @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 합친 어노테이션
- 1, 3번에 설명한대로 문제점이 있으니 보통 사용을 금지
결론
실무에서는 @ToString, @Getter, @Setter 3개만 사용하고 그 외는 최대한 조심히 사용하는 것이 추천됨
References
- https://velog.io/@rosa/Lombok-%EC%A7%80%EC%96%91%ED%95%B4%EC%95%BC-%ED%95%A0-annotation
- https://n1tjrgns.tistory.com/164
- https://kwonnam.pe.kr/wiki/java/lombok/pitfall