Skip to content
Discussion options

You must be logged in to vote

이번 강의에서 강사님이 간단하게 짚어주신 내용이네요 !
강의에서는 @Data 애노테이션이 Getter, Setter 등 많은 기능들이 자동으로 제공되기 때문에 주의해서 사용해야한다고 말씀해주셨습니다
조금 더 자세한 근거를 알고 싶어 정리해보았습니다 :)

@Data

  • @Data = @toString + @getter + @setter + @RequiredArgsConstructor + @EqualsAndHashCode
    • @Data는 위의 여러 애노테이션을 합쳐놓은 애노테이션

문제점 1️⃣ : 무분별한 @setter 남용

  • @Data에는 @setter이 포함되어있기 때문에, 의도가 불명확하고 변경하면 안되는 값임에도 불구하고 변경 가능한 값이라고 착각하고 변경할 수 있음 (안전성 보장 X)

문제점 2️⃣ : @RequiredArgsConstructor 사용으로 인한 문제점 (인스턴스 멤버 순서 변경)

@RequiredArgsConstructor@AllArgsConstructor

문제점 설명을 위해 두 애노테이션의 기능을 먼저 살펴볼 수 있다 (@Data에는 @AllArgsConstructor은 포함하지 X)

  • @AllArgsConstructor : 객체 내부의 인스턴스 멤버들을 모두 가지고 있는 생성자를 생성하는 Lombok 애노테이션
  • @RequiredArgsConstruct : 객체 내부의 final, @Notnull이…

Replies: 2 comments

Comment options

You must be logged in to vote
0 replies
Answer selected by YuDeokRin
Comment options

YuDeokRin
Jul 5, 2024
Maintainer Author

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2 participants