자바 개발을 할때 많은 사람들이 사용하는 편리한 라이브러리 중 lombok이 있다.
lombok은 @Setter, @Getter, @ToString 등의 어노테이션을 제공해주는데,
여러가지를 묶어서 한번에 제공하는 @Data 도 있다.
@Data 는
@ToString : 객체를 문자열로 표현할 수 있는 메서드 자동 생성
@EqualsAndHashCode : equals(), hashCode() 메서드 자동 생성
@Getter : getter 메서드 자동 생성
@Setter : setter 메서드 자동 생성
@RequiredArgsConstructor : 필요한 파라리터(초기화 되지 않은 final필드, notnull 필드 등)가 포함된 생성자 자동 생성
위의 5가지 어노테이션을 한번에 모두 포함시키는 어노테이션이다.
처음 공부를 할때는 어떤게 필요할지 생각해볼 겨를도없어서 일단 무작정 @Data를 달아두고 사용했었는데
공부를 하다보니 여러가지 이유로 사용하는것을 지양한다고 한다.
- 우선 필요없는 어노테이션까지 포함시킬수 있어 쓸데없이 무거워질수 있으며,
- 객체가 연관관계일 경우 자동으로 포함되는 toString이 순환참조 문제가 생길수도 있다.
- 또 무분별한 setter 생성으로 안전성을 떨어뜨리고
- 자동으로 만들어주는 생성자는 개발자가 확인하기 어려워 나중에 코드를 수정할 일이 생겼을 때 문제가 생겨도 인식하지 못하고 넘어갈 위험이있다.
- 또한 변경 가능한 객체에서 equalsAndHash 사용 역시 개발 중 찾기 어려운 문제로 돌아올 수 있다.
결론 : 어노테이션 남용 없이 꼭 필요한 것을 사용하자
'Web > Spring' 카테고리의 다른 글
[Spring security] jwt 로그인 구현에서 OncePerRequestFilter (0) | 2023.07.20 |
---|---|
[Spring] 자바 네이밍 컨벤션의 중요성 (0) | 2023.07.20 |
[Spring] 요청 데이터 처리 관련 어노테이션 정리 (0) | 2023.07.20 |
[Spring]Java에서 DB 연동하여 사용하는 기술 정리 (0) | 2023.07.20 |
Spring Data JPA - 쿼리메소드 (0) | 2023.07.19 |