@EqualsAndHashCode 의 of를 사용하는 이유

상호 참조된 class가 필드로 등록되어 있을경우 중복으로 hashcode가 생성되어

stackoverflowerror가 발생하게 된다.

(무한 재귀로 hashcode가 생성됨)

lombok annotation을 custom 한 annotation을 만들어 줄이지 못하는 이유

lombok annotation은 meta annotation으로 작동하지 않기때문에 줄일수 없다.

spring이 제공하는 annotation들은 meta annotation으로 작동하기 때문에 가능함.

@Builder 사용시 @AllArgsConstructor이 필요한 이유

builder 사용시 객체를 생성할때 기본생성자가 모든 필드를 참조해야 만들수있는 생성자로 되어있는데 생성자의 접근제어가 default로 되어있어 외부에서 만들수가 없다. ( builder로 생성안할경우만)

그렇기때문에 AllargsConstructor와 noArgsConstructor을 추가해준다.

기본생성자와 모든 필드를 참조하는 생성자를 만들수 있게된다.

@Data 를 사용하지 않는 이유

@Data 사용시 equalsAndhashCode란 annotation이 포함되어 있는데 of를 사용하는 이유와 마찬가지로 상호참조로 인한 무한생성으로 stackoverflow error가 발생하고

마찬가지로 toString annotation에서도 위와 같은 이유로 stackoverflow error가 발생하게 된다.

'개발 > etc' 카테고리의 다른 글

OAUTH - 1  (0) 2020.08.21
네트워크 복습 1  (0) 2020.08.14
JUnit5 에서 parameter 사용하기  (0) 2020.07.21
어플리케이션 아키텍처와 객체지향 영상 후기  (0) 2020.06.28
blob  (0) 2020.04.30

+ Recent posts