@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 |