CustomArgumentResolvers 自定义参数解析器无效

Spring配置中自定义参数解析器
     <!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射-->  
     <mvc:annotation-driven />  
     <!-- 启动包扫描功能,以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean -->  
     <context:component-scan base-package="com.mvc.rest" />  
     <!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 -->  

     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/view/" p:suffix=".jsp" />  

 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
      <property name="synchronizeOnSession" value="true" />
      <property name="customArgumentResolvers">
      <list>
      <bean class="com.mvc.rest.MyMethodArgumentsResolver"/>
      </list>
      </property>
     </bean> 

如果按照以上配置在DispatcherServlet.java类中初始化处理器适配器initHandlerAdapters时

handlerAdapters会出现4个适配器,第一个和第四个相同类型

[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter@413be, org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter@1ac3fc7, org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter@18f48a1, org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter@1e94f23]

但第四个适配器中除包含了第一个适配器的所有参数解析器,还包括了自定义的参数解析器,所以修改上下文配置,调整一下自定义参数配置

 <!-- 自定义参数解析 -->
     <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
      <property name="synchronizeOnSession" value="true" />
      <property name="customArgumentResolvers">
      <list>
      <bean class="com.mvc.rest.MyMethodArgumentsResolver"/>
      </list>
      </property>
     </bean> 
     <!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射-->  
     <mvc:annotation-driven />  
     <!-- 启动包扫描功能,以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean -->  
     <context:component-scan base-package="com.mvc.rest" />  
     <!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 -->  
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/view/" p:suffix=".jsp" />  

这样我们自定义的参数解析器就到了第一的位置,当然,如果各位大神有更好的方法,在此求教,谢谢~~ 

你可能感兴趣的:(CustomArgumentResolvers 自定义参数解析器无效)