RequestBody를 리턴하고 싶었다. 너목들 회의에 요구사항이 생겨서 그랬는데, 이전에 시도해봤지만 잘 되지 않았다. 이유는 다음과 같다.
어떻게 해결할 수 있을까 생각해보다가 aop를 떠올렸는데, 일단 돌아가는 코드가 필요하기 때문에 기본 핸들러를 수정하는 형태로 가닥을 잡았다. 하지만 바로 문제가 발생했는데, Request에 대한 것은 HttpRequestHandler
에서 담당한다. 따라서 해당 클래스의 어댑터를 상속받아 리퀘스트를 읽기전에 복사하여 어트리뷰트로 넣어주면 될 것이라 생각했는데, 문제는 저번에 한 번 봤었던 WebMvcConfigurationSupport
에서 설정을 넣어주는 것이기 때문에 스프링 부트의 기본 설정이 먹히지 않는 것 같았다. 물론 직접 나머지 설정까지 해줄 수 있겠지만, 이거 하나때문에 해야하는 작업이 너무 많아지기에 다른 방법을 찾아봤다.
잭슨을 커스터마이징 하여 쓴다는 글을 찾아냈다. https://zepinos.tistory.com/33 인데, 사용 목적이 다르긴 하지만 어쨌든 리퀘스트까지 호출하였다. 당황했던 부분은, 커스터마이징을 하니 프로퍼티에 설정해놓은 잭슨 설정값들이 적용되지 않는다는 점이었는데, 생성자에서 세팅을 해주도록 처리했다. 어쨌든 컨트롤러 어드바이스까지 어트리뷰트가 전달되는 것을 확인했고, 이제 남은 것은 인풋스트림을 어떻게 다루느냐이다. 스프링을 하면서 파일 입출력 외에 스트림을 다룰 일이 있을 줄은 몰랐는데, 이래서 기본이 중요하다고 하나보다.
남은 과정은 마저 한 뒤 글로 정리를 해봐야겠다. 그리고 진행하다보니 스프링 설정 같은걸 많이 잊은 것 같다. 가물가물한데 이것도 간만에 다시 정리를 해봐야겠다.
Powered with by Gatsby 2.0