- 기본적으로 @Data 어노테이션은 Lombok 라이브러리에서 제공하는 기능입니다.
## @Data 어노테이션 특징
1. Getter 메서드: 각 필드에 대해 getter 메서드를 생성합니다.
2. Setter 메서드: 각 필드에 대해 setter 메서드를 생성합니다.
3. toString() 메서드: 객체의 내용을 문자열로 변환하는 toString() 메서드를 생성합니다.
4. equals() 메서드: 객체 간의 동등성을 비교하는 equals() 메서드를 생성합니다.
5. hashCode() 메서드: 객체의 해시 코드를 반환하는 hashCode() 메서드를 생성합니다.
6. RequiredArgsConstructor: final 또는 @NonNull로 선언된 필드에 대한 생성자를 자동으로 생성합니다.
이렇게 많은 기능을 제공하는지는 저도 찾아보면서 알게 되었습니다..!!
사용시 주의 사항.
** 모든 필드에 대해 equals와 hashCode 메서드를 생성하기 때문에, 특정 필드를 제외하거나 원하는 방식으로 커스터마이즈해야 할 경우 Lombok의 다른 어노테이션(@EqualsAndHashCode.Exclude 등)을 함께 사용해야 한다고 합니다. **
그렇다면 왜 @Data 어노테이션 사용을 지양해야 할까요??
이유는 다음과 같습니다.
- 예를 들어 id의 필드가 변경을 허용치 않기로했다면 setter가 없어야합니다. -> @Data 어노테이션을 사용하면 Setter가 자동 생성 되기에 id 값을 변경할 수 있는 문제가 발생하므로 사용을 지양해야합니다!
'스프링 > 개념' 카테고리의 다른 글
IoC(Inversion Of Control) 컨테이너와 스프링 빈(Bean) (1) | 2024.09.30 |
---|---|
의존성 주입(DI)과 주입 방식 (0) | 2024.09.30 |
Session 과 Session Login (0) | 2024.09.23 |
Cookie 와 Cookie Login (0) | 2024.09.23 |
엔티티(Entity) - 왜 기본 생성자가 필요할까? (0) | 2024.09.10 |