내일배움캠프 Spring 32일차 TIL

Skadi·2024년 2월 6일
0

스프링 숙련

JWT Token과 Spring Security가 적용된 스케쥴앱 서버 제작

순환 참조

  • 같이 공부하는 팀원분이 순환참조 오류에 빠지셨다.
@Getter
@NoArgsConstructor
public class ListTodoResponseDto {

    private User user;
    private List<GetAllTodoResponseDto> responseDtoList = new ArrayList<>();

    public ListTodoResponseDto(User user) {
        this.user = user;
        this.responseDtoList = user.getTodo().stream().map(GetAllTodoResponseDto::new).toList();
    }
}
  • User 와 Schedule은 이미 양방향 참조를 Entity에서 이루고 있다.

  • 해당 dto에서 생성자를 사용할 때 사용한 stream 문법 부분에서 순환참조가 발생한다. (이미 user는 todo를 참조하고 있고 todo도 user를 참조하고 있어 무한 참조가 발생) = 스택 오버 플로우 발생

  • 해결방안
    - User user 위에 @JsonIgnore를 붙어주면 순환참조를 끊어준다.

0개의 댓글