关于<mvc:annotation-driven/>标签会自动注册
RequestMappingHandlerMapping、
RequsetMappingHandlerAdapter与
ExceptionHandlerExceptionResolver三个bean。
还将提供一下支持
- 支持使用ConversionService实例对表单参数进行类型转换
- 支持使用@NumberFormatannotation、@DateTimeFormat注解完成数据类型的格式化
- 支持使用@Valid注解对JavaBean实例进行JSR 303验证
- 支持使用@RequestBody和ResponseBody注解
上文数据绑定流程中知道, 数据绑定(WebDataBinder)的转换和格式化是存在(conversionServcie)中。那么来看一下设置和不设置<mvc:annotation-driven/>后,conversionService的变化。
既没有配置<mvc:default-servlet-handler/>也没有配置<mvc:annotation-driven/>
conversionService为:
看到conversionService为空(一些基本的转换还是可以转换的),而装配在springMVC上下文中的handlerAdapter
配置了<mvc:default-servlet-handler/>但没有配置<mvc:annotation-driven/>(由于配置了一个配置导致页面报错)
由于配置中没有了AnnotationMethodHandlerAdapter,所以没办法去处理requestMapping注解的请求。直接报错了。
配置了<mvc:default-servlet-handler/>也配置了<mvc:annotation-driven/>
上面我们看到装配了带有注解的<mvc:default-servlet-handler/>、<mvc:annotation-driven/>的handlerAdapter的区别。其中有一个是
AnnotationMethodHandlerAdapter和RequestMappingHandlerAdapter来看一下这两者的区别。
看到这个AnnotationMethodHandlerAdapter已经过期,spring 3.2这个bean已经被RequestMapingHandlerAdapter替代了。
从名字上可以看出来annotation是注解的,他也会支持requestMapping注解。