728x90
반응형
@Data
사용 지양
해당 어노테이션은 @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor
을 모두 갖춘 강력한 어노테이션임
무분별한 사용은 오히려 부작용을 가져올 수 있음(Setter 남용 금지 등)
순환 참조 대비
두 객체가 양방향 연관관계 일때, toString()
을 호출하면 무한 순환 참조의 문제가 발생한다. 따라서 @ToString
어노테이션을 통해 제외시켜줘야 한다.
@ToString(exclude = "대상객체")
@NoArgsConstructor
접근 권한 최소화
기본 생성자를 만들 때는 접근 권한을 protected로 설정한다.
@NoArgsConstructor(access = AccessLevel.PROTECTED)
굳이 외부에서 생성을 할 수 있도록 열어둘 필요가 없으며, 객체 생성에 대한 안전성을 보장할 수 있다. 객체 내부에서 생성자를 하나로 만들어 활용하고, 이때 @Builder
를 통해 사용하자
@Builder
사용 시 매개변수 최소화
만약 클래스 상단에 @Builder
를 사용하면, 해당 객체에서 @AllArgsConstructor
어노테이션을 붙인 효과를 발생시킨다. 따라서 해당 객체의 모든 필드에 대한 매개변수를 받는 기본 생성자를 만든다.
하지만 객체 생성 시 모든 필드에 대한 매개변수 활용은 방지해야할 것이다. (createAt, updateAt 등 따로 다른 어노테이션이 담당하고 있는 필드의 경우)
따라서 객체 내부의 생성자를 만들 때 @Builder
로 설정하고, 객체 생성 시 받아야 할 데이터만 매개변수로 넣어 만들 수 있도록 하자
[참고 자료]
728x90
반응형
'스프링(Spring)' 카테고리의 다른 글
[Spring Boot] CORS 설정 시 addCorsMappings 관련 에러 (4) | 2021.11.18 |
---|---|
[JPA] Infinite Recursion (0) | 2021.11.18 |
[Spring Data JPA] 더티 체킹 (Dirty Checking) (0) | 2021.09.13 |
[Spring Boot] Test Code (0) | 2021.08.23 |
[Spring Boot] SpringApplication (0) | 2021.08.22 |