====== 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]]