<!-- 启动注解驱动的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" />
这样我们自定义的参数解析器就到了第一的位置,当然,如果各位大神有更好的方法,在此求教,谢谢~~
欢迎加入我的QQ交流群425783133