프로그래밍/Back end
[Back end] Spring MVC 리턴 타입 캐시
Reference M1
2019. 3. 17. 21:36
Spring이 내부 매커니즘으로 사용하는 캐시도 조심해서 써야 한다. Spring MVC에서 작성되는 메서드의 리턴 타입에 문자열을 반환할 수도 있고, ViewResolver를 사용하여 뷰 객체를 반환할 수도 있다.
@Controller
public Class SampleController {
@RequestMapping("/member/")
public String hello(@PathVariable int id) {
...생략
return "redirect:/returnUrl;
}
}
@Controller
public Class SampleController {
@RequestMapping("/member/")
public ModelAndView hello(@PathVariable int id) {
...생략
return new RedirectView("/returnUrl");
}
}
두 가지 컨트롤러의 차이점은 반환에 있다. 문자열 자체를 리턴하면 Spring은 해당 문자열에 해당하는 뷰 객체를 찾는 매커니즘을 사용하는데, 이때 이미 찾아본 뷰 객체를 캐싱 해두면 다음에 동일한 문자열이 반환됐을 때 빠르게 뷰 객체를 찾을 수 있다. Spring에서 제공하는 ViewResolver 중에 InternalResourceViewResolver에는 캐싱 기능이 내장되어있다.
문자열로 반환하기보다는 뷰 객체 자체를 반환하는 방법이 메모리 릭을 방지하는 데 도움이 된다.