DefaultAnnotationHandlerMapping
2016-01-07 14:40
239 查看
开始是为了实现一个全局的拦截器DefaultHandlerInterceptor,继承HandlerInterceptorAdapter类,并把这个类注入到Spring的DefaultAnnotationHandlerMapping的interceptors中
配置如:
<!-- 处理在类级别上的@RequestMapping注解 -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<!-- 多个拦截器,顺序执行 -->
<ref bean="SpringMVCInterceptor" />
<ref bean="OpenSessionInViewInterceptor"/>
</list>
</property>
</bean>
<!-- 处理方法级别上的@RequestMapping注解 -->
<bean id="annotationMethodHandlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean
class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=utf-8</value>
<value>text/plain;charset=utf-8</value>
</list>
</property>
</bean>
<bean
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverterv2">
<property name="objectMapper">
<beanclass="net.pm.misc.Hibernate4AwareObjectMapper" />
</property>
</bean>
</list>
</property>
</bean>
<!-- 表示使用cglib,而非JDK的动态代理,因为Controller没有实现接口,所以要配置这里 -->
<aop:aspectj-autoproxyproxy-target-class="true" />
可是在DefaultHandlerInterceptor拦截器中,老是不进断点.
原因:
配置了<mvc:annotation-driven/>
这个配置声明没有 defaultAnnotationHandlerMapping这个属性,对于@ResultMapping标签的解析,用"org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping” 这个类来处理.}所以要去掉<mvc:annotation-driven/>,去掉其默认配置,否则会实例化两个DefaultAnnotationHandlerMapping,并且不使用你配置的那个DefaultAnnotationHandlerMapping.
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter与<mvc:annotation-driven/>关系与上同理.
配置如:
<!-- 处理在类级别上的@RequestMapping注解 -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<!-- 多个拦截器,顺序执行 -->
<ref bean="SpringMVCInterceptor" />
<ref bean="OpenSessionInViewInterceptor"/>
</list>
</property>
</bean>
<!-- 处理方法级别上的@RequestMapping注解 -->
<bean id="annotationMethodHandlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean
class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=utf-8</value>
<value>text/plain;charset=utf-8</value>
</list>
</property>
</bean>
<bean
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverterv2">
<property name="objectMapper">
<beanclass="net.pm.misc.Hibernate4AwareObjectMapper" />
</property>
</bean>
</list>
</property>
</bean>
<!-- 表示使用cglib,而非JDK的动态代理,因为Controller没有实现接口,所以要配置这里 -->
<aop:aspectj-autoproxyproxy-target-class="true" />
可是在DefaultHandlerInterceptor拦截器中,老是不进断点.
原因:
配置了<mvc:annotation-driven/>
这个配置声明没有 defaultAnnotationHandlerMapping这个属性,对于@ResultMapping标签的解析,用"org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping” 这个类来处理.}所以要去掉<mvc:annotation-driven/>,去掉其默认配置,否则会实例化两个DefaultAnnotationHandlerMapping,并且不使用你配置的那个DefaultAnnotationHandlerMapping.
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter与<mvc:annotation-driven/>关系与上同理.
相关文章推荐
- iOS 开发中遇见的小bug
- Objective-C 计算代码运行时间
- android基础学习之上下文菜单
- Nagios全方位告警接入-电话/微信/短信都支持
- Android 实例:在Activity 之间跳转的intent
- H5 App设计者需要注意的21条禁忌
- iOS精益求精 设计模式
- Android NDK开发之 ARM与NEON指令说明
- H5 App设计者需要注意的21条禁忌
- android-apt plugin
- 23.Android之颜色码制表
- Android 开发资源
- Android实现竖着的滑动刻度尺效果,选择身高(竖向的)
- android 自定义Dialog弹出提示框
- iOS 解决导航栏隐藏后显示的问题
- iOS开发怎么使用copy关键字
- android实现ViewPager,打开app展示图片
- Android sdk 下载链接
- 微信支付流程
- android - 内存分析与内存优化