본문 바로가기
💻 하나씩 차곡차곡/Back-end

[Spring/스프링부트] @Data 사용을 지양하는 이유 (= 단점)

by 뚜루리 2024. 1. 10.
728x90
320x100
[오늘의 궁금증]
@Data 는 여러 어노테이션을 한 번에 쓸 수 있는 유용한 어노테이션이지만 한 편으로는 @Data 사용을 지양하기도 한다 그 이유가 뭘까?

 

@Data 어노테이션이란?

@ToString, @Getter, @Setter, @EqualsAndHashCode, @RequiredArgsConstructor을 모두 포함하는 강력한 어노테이션

 

  • @ToString : toString 메소드를 자동생성
  • @Getter : 모든 필드의 getter메소드 가 자동 생성 
  • @Setter : 모든 필드의 setter 메소드가 자동 생성
  • @EqualsAndHashCode : equals, hashCode 메서드 자동생성
  • @RequiredArgsConstructor : final이나 @NonNull인 필드 값만 파라미터로 받는 생성자 자동생성.

 

 

@Data 사용을 지양하는 이유

1. Setter 남용

예를 들어 id의 필드가 변경을 허용치 않기로 했다면 setter도 없어야 안정성이 보장된다. 하지만 @Data를 사용하면 id 필드도 setter가 생성되기 때문에 안정성을 보장 받을 수 없게 된다.

 

2. @RequiredArgsConstructor 어노테이션으로 인한 문제

이 부분은 직접 나중에 사용해봐야 확실히 알것 같아서 일단 너무 잘 정리를 해놓으신 블로그 글이 있어 해당 글을 인용해 놓았다.

@RequiredArgsConstructor 어노테이션으로 인한 문제으로 문제가 발생할 수 있다. 예를 들어 인해 두 개의 타입 인스턴스 멤버를 선언한 상황에서 개발자가 선언된 인스턴스 멤버의 순서를 바꾸면, 개발자도 인식하지 못하는 사이에 lombok이 생성자의 파라미터 순서를 필드 선언 순서에 따라 변형하게 된다. 이때, IDE가 제공해주는 리팩토링은 전혀 동작하지 않고, 두 필드가 동일 타입이기 때문에 기존 소스에서도 오류가 발생하지 않아 아무런 문제없이 동작하는 것으로 보이지만, 실제로 입력된 값이 바뀌어 들어가는 상황이 발생한다.

출처: https://dev-code-notepad.tistory.com/153 [코드메모장:티스토리]

 

 


출처1) https://www.daleseo.com/lombok-popular-annotations/

 

[자바] 자주 사용되는 Lombok 어노테이션

Engineering Blog by Dale Seo

www.daleseo.com

 

728x90
320x100