<mvc:annotation-driven /> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <bean class="cn.com.songjy.interceptors.ResponseMessageConverter"></bean> </list> </property> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="customArgumentResolvers"> <list> <bean class="cn.com.songjy.commons.MapArgumentResolver"></bean> </list> </property> </bean> <mvc:interceptors> <bean class="cn.com.songjy.interceptor.ParamValidateInterceptor"/> <mvc:interceptor> <!-- 表示符合/company/*这样的模式才拦截 --> <mvc:mapping path="/company/*" /> <bean class="cn.com.songjy.interceptors.VisitInterceptor" /> </mvc:interceptor> </mvc:interceptors>
但是配置没有生效,参阅 springMVC之annotation优化后可知出现的原因是当配置了<mvc:annotation-driven/>后,会自动加载org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping和org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter,所以如果显示的配置则需去掉配置<mvc:annotation-driven/>,最后的配置如下:
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <bean class="cn.com.songjy.interceptors.ResponseMessageConverter"></bean> </list> </property> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="customArgumentResolvers"> <list> <bean class="cn.com.songjy.commons.MapArgumentResolver"></bean> </list> </property> </bean> <mvc:interceptors> <bean class="cn.com.songjy.interceptor.ParamValidateInterceptor"/> <mvc:interceptor> <!-- 表示符合/company/*这样的模式才拦截 --> <mvc:mapping path="/company/*" /> <bean class="cn.com.songjy.interceptors.VisitInterceptor" /> </mvc:interceptor> </mvc:interceptors>
DefaultAnnotationHandlerMapping
<mvc:annotation-driven>和DefaultAnnotationHandlerMapping 配置教训
SpringMVC拦截器简单使用
基于注解风格的Spring-MVC的拦截器
Spring3 MVC 深入研究
解决Spring MVC 对AOP不起作用的问题