자바에서 Getter, Setter, toString과같은 반복 메소드 작성을 줄여주기 위한 라이브러리이다. 일반적으로 DTO, VO와 같은 모델에서 사용한다.
@Data 어노테이션을 까보면 @Getter / @Setter, @ToString, @EqualsAndHashCode와 @RequiredArgsConstructor, @Value 를 합쳐놓은 종합 선물 세트라고 볼 수 있다.
@Data는 종합 선물 세트이기 때문에 지양하는 것이 좋다. @Data를 하위 어노테이션으로 리팩토링하는 과정을 알기 위해 어노테이션에 대해 알아보자!
private로 설정된 필드 변수를 외부에서 접근하려고 만든 것
private로 설정된 필드 변수를 외부에서 수정하려고 만든 것
객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴 하는 것
equals()메소드와 hashCode()메소드를 생성해준다.
equals : 2개의 객체가 동일한지 검사하기 위해 사용
hashCode : 런타임중 객체의 유일한 integer 값을 반환
초기화 되지 않은 final 필드나 @NonNull 어노테이션이 붙은 필드에 대해 생성자를 만들어 준다
++ 비슷한 어노테이션으로 생성자를 만들어주는 어노테이션(@AllArgsConstructor, @NoArgsConstructor)가 있다.
AllArgsConstructor : 클래스에 존재하는 모든 필드에 대한 생성자를 자동으로 생성한다.
NoArgsConstructor : 파라미터가 없는 생성자를 생성한다.
객체를 불변객체로 만들어준다.
propertise로 사용해봤지만 Data에서는 어떻게 사용되는지 잘 모르겠다.
추가로 정리가 필요함