Dev_Henry

[Spring] @Data 어노테이션 본문

Web/Spring

[Spring] @Data 어노테이션

데브헨리 2023. 7. 20. 09:25
728x90

자바 개발을 할때 많은 사람들이 사용하는 편리한 라이브러리 중 lombok이 있다.

lombok은 @Setter, @Getter, @ToString 등의 어노테이션을 제공해주는데,

여러가지를 묶어서 한번에 제공하는 @Data 도 있다.

@Data 는

@ToString : 객체를 문자열로 표현할 수 있는 메서드 자동 생성

@EqualsAndHashCode : equals(), hashCode() 메서드 자동 생성

@Getter : getter 메서드 자동 생성

@Setter : setter 메서드 자동 생성

@RequiredArgsConstructor : 필요한 파라리터(초기화 되지 않은 final필드, notnull 필드 등)가 포함된 생성자 자동 생성

위의 5가지 어노테이션을 한번에 모두 포함시키는 어노테이션이다.

처음 공부를 할때는 어떤게 필요할지 생각해볼 겨를도없어서 일단 무작정 @Data를 달아두고 사용했었는데

공부를 하다보니 여러가지 이유로 사용하는것을 지양한다고 한다.

- 우선 필요없는 어노테이션까지 포함시킬수 있어 쓸데없이 무거워질수 있으며,

- 객체가 연관관계일 경우 자동으로 포함되는 toString이 순환참조 문제가 생길수도 있다.

- 또 무분별한 setter 생성으로 안전성을 떨어뜨리고

- 자동으로 만들어주는 생성자는 개발자가 확인하기 어려워 나중에 코드를 수정할 일이 생겼을 때 문제가 생겨도 인식하지 못하고 넘어갈 위험이있다.

- 또한 변경 가능한 객체에서 equalsAndHash 사용 역시 개발 중 찾기 어려운 문제로 돌아올 수 있다.

결론 : 어노테이션 남용 없이 꼭 필요한 것을 사용하자

728x90
반응형