====== Spring @MVC HandlerMethodArgumentResolver ======
* [[http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/method/support/HandlerMethodArgumentResolver.html|HandlerMethodArgumentResolver]] Spring 3.1이상 지원.
* 컨트롤러 메소드에 파라미터로 객체를 주입할 수 있게 된다.
* [[http://blog.42.nl/articles/leveraging-the-spring-mvc-3.1-handlermethodargumentresolver-interface|42 B.V.: Leveraging the Spring MVC 3.1 HandlerMethodArgumentResolver interface]]
===== 구현 =====
* ''public boolean supportsParameter(MethodParameter parameter)'' : Resolver가 해당 파라미터에 적용 가능한지 여부를 검사하여 true/false 리턴
* ''Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception'' : 파라미터 인자와 기타 정보등을 통해서 실제 객체를 생성하여 리턴하면 해당 객체가 컨트롤러 메소드의 인자로 들어가게 된다.
===== 적용 =====
혹은 java-config에서
@Override
protected void addArgumentResolvers(List argumentResolvers) {
super.addArgumentResolvers(argumentResolvers);
argumentResolvers.add(myArgumentResolver());
// ....
}
===== MethodParameter =====
* [[http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/core/MethodParameter.html|MethodParameter]]
* 지정된 파라미터에 대한 각종 정보와 어노테이션 등을 읽어올 수 있다.
===== ModelAndViewContainer =====
* [[http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/method/support/ModelAndViewContainer.html|ModelAndViewContainer]]
===== NativeWebRequest =====
* [[http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/context/request/NativeWebRequest.html|NativeWebRequest]] : HttpServletRequest를 확보할 수 있다.
* PathVariable 읽기
HttpServletRequest httpServletRequest = webRequest.getNativeRequest(HttpServletRequest.class);
Map pathVariables = (Map) httpServletRequest.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
// pathVariables 맵에 정보가 저장 됨.
===== WebDataBinderFactory =====
* [[http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/bind/support/WebDataBinderFactory.html|WebDataBinderFactory]]