
@GetMapping("/test") public String test() { return "redirect:/test/"+Math.random(); } @GetMapping("/test/{id}") public String test(@PathVariable Double random) { ... } 스프링 낮은 버전을 사용 할 경우, 위와 같이 redirect prefix를 사용하여 string 형태로 redirect 할 경우 memory leak이 발생할 수 있다. spring 내부적으로 beanName을 기준으로 ConcurrentHashMap에 caching 하는 로직이 있어 pathVariable이 포함된 url 등을 return하게 될 경우 모든 redirect return url이 캐시되어 m..

RestTemplate으로 대용량 파일 전송시 OOM(Out Of Memory)가 발생 할 수 있다. RestTemplate 소스를 열어보면 상단 캡처처럼 setBufferRequestBody를 false로 세팅 후 사용을 권장하고있다. RestTemplate가 내부적으로 버퍼를 사용하게 되는데 이 옵션을 꺼주는것이다. 실제 테스트를 진행해보자. 테스트 결과 실제로 확인해보기위해 750MB Dummy file을 생성한 후 테스트를 진행했다. 결과는 다음과 같다. - 첫번째 동그라미 : setBufferRequestBody(true) - 두번째 동그라미 : setBufferRequestBody(false)