ContentCachingRequestWrapper은 요청의 응답을 단 한 번 밖에 읽지 못 하기에 이를 여러번 사용할 수 있도록 해준다. 다만 여기에는 여러가지 조건과 제약이 있는데 이를 살펴보자.
ContentCachingRequestWrapper를 사용하기 위해 보통 아래와 같은 방식을 사용하는데, 처음 이를 사용할 때 ContentCachingRequestWrapper는 request 값을 캐싱하여 담아두는 , 복사해둔다는 개념만 알았기에 선언과 동시에 이 값이 저장이 되는 것으로 생각하고 있었다.
하지만 이를 자세히 살펴보면 , 선언과 동시에 저장되는 것은 request 값의 length뿐, 그 값은 저장이 되지 않은 것을 볼 수 있다.
실제로 데이터를 저장하는 것은 값을 read 할 때이며, 때문에 이러한 값을 저장하기 위해서는 요청을 getInputStream으로 읽어야만 한다.
즉, ContentCachingRequestWrapper에 값을 저장하기 위해서는
요청의 스트림을 읽기 전에, ContentCahingRequestWrapper를 선언하고 이후에 값을 읽어야만 한다.
'Log' 카테고리의 다른 글
로그 구분 ID 추가 logback-spring.xml + Filter (0) | 2024.08.12 |
---|---|
Filter 로그 처리 후 Controller에 요청 전달하기 (0) | 2024.08.08 |
Filter doFilter, ContentCachingWrapper, copyBodyToResponse 사용 이유 및 예시 (0) | 2024.08.06 |
스프링부트 Filter를 이용한 로그(Request,Response ) 출력 (0) | 2024.08.02 |