<mvc:annotation-driven/>与<mvc:default-servlet-handler/>

本文解释了Spring MVC框架中处理@RequestMapping注解的方式。当没有指定任何标签时,默认使用AnnotationMethodHandlerAdapter来处理此注解。如果仅配置了部分组件,则可能导致无法识别控制器。当同时配置了@Controller和@RequestMapping时,系统会注册RequestMappingHandlerAdapter来处理请求映射。

原文出自

http://www.cnblogs.com/hujingwei/p/5349983.html


这里写图片描述


当两种标签都没有的时候,框架默认注册的有AnnotationMethodHandlerAdapter这个bean,所以能够处理@RequestMapping这个注解;

但是只配置了时所注册的三个bean都不能处理@RequestMapping注解,因此无法找到相应的Controller,进而无法进行访问路径的映射;

当两种标签都有的时候,会注册一个RequestMappingHandlerAdapter的bean,这个bean能够处理@RequestMapping这个注解。

### 使用方法 通常在***-servlet.xml 中加入 `<mvc:annotation-driven/>` 标签来启用注解驱动。其还有可选配置,如下所示 [^3][^4]: ```xml <mvc:annotation-driven message-codes-resolver="bean name" validator="bean name" conversion-service="bean name" ignoreDefaultModelOnRedirect="true or false"> <mvc:message-converters> <bean></bean> </mvc:message-converters> <mvc:argument-resolvers> <bean></bean> </mvc:argument-resolvers> <mvc:return-value-handlers> <bean></bean> </mvc:return-value-handlers> </mvc:annotation-driven> ``` ### 作用 - 一些注解的前提配置,如果没有开启这个标签,有些注解就无法解析 [^1]。 - 该标签提供 `enable-matrix-variables="true"` 属性 [^1]。 - 支持解析 Joda - Time 类型的数据 [^1]。 - 支持 Validator 对象的注册 [^1]。 - 支持 JSON 数据的接收反馈 [^1]。 - 当使用 `mvc:view-controller` 标签时,加入该标签可避免 `requestMapping` 失效。当为处理静态资源问题加入 `mvc:default-servlet-handler` 时,加入该标签也可避免 `requestMapping` 失效。当使用自定义类型转换器时,需要加上该标签 [^2]。 - 配置该标签后,Spring 会启用注解驱动,通过 `context:component-scan/` 标签的配置,自动将扫描到的 `@Component`、`@Controller`、`@Service`、`@Repository` 等注解标记的组件注册到工厂中,以处理请求 [^4]。 ### 原理 所有的自定义命名空间(像 mvc,context 等)下的标签解析都是由 `BeanDefinitionParser` 接口的子类来完成的 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值