Spring MVC 中,<mvc:annotation-driven /> 标签的注意点

从Spring Framework 3.1开始,&lt;mvc:annotation-driven/&gt;注册了新的支持类,如RequestMappingHandlerMapping、RequestMappingHandlerAdapter等,取代了早期的DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter等。这些类支持注解控制器的请求处理,并启用了更多特性。

<mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。

<mvc:annotation-driven /> 会自动注册 DefaultAnnotationHandlerMappingAnnotationMethodHandlerAdapter 这两个bean, 它们是 Spring MVC@Controller 分发请求所必须的。

这段话我在很多帖子都看到过,我自己的项目本身使用的Spring MVC 4.3.5,实际上在3.1之后,<mvc:annotation-driven />注册的类是发生了变化的。

下面是官方文档里的说明:

Spring Framework 3.1 introduces a new set of support classes for processing requests with annotated controllers:

  • RequestMappingHandlerMapping
  • RequestMappingHandlerAdapter
  • ExceptionHandlerExceptionResolver

These classes are a replacement for the existing:

  • DefaultAnnotationHandlerMapping
  • AnnotationMethodHandlerAdapter
  • AnnotationMethodHandlerExceptionResolver
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:annotation-driven />

</beans>

The above registers a RequestMappingHandlerMapping, a RequestMappingHandlerAdapter, and an ExceptionHandlerExceptionResolver (among others) in support of processing requests with annotated controller methods using annotations such as @RequestMapping , @ExceptionHandler, and others.

It also enables the following:

  • Spring 3 style type conversion through a ConversionService instance in addition to the JavaBeans PropertyEditors used for Data Binding.
  • Support for formatting Number fields using the @NumberFormat annotation through the ConversionService.
  • Support for formatting Date, Calendar, Long, and Joda Time fields using the @DateTimeFormat annotation.
  • Support for validating @Controller inputs with @Valid, if a JSR-303 Provider is present on the classpath.
  • HttpMessageConverter support for @RequestBody method parameters and @ResponseBody method return values from @RequestMapping or @ExceptionHandler methods.

  This is the complete list of HttpMessageConverters set up by mvc:annotation-driven:

  • ByteArrayHttpMessageConverter converts byte arrays.
  • StringHttpMessageConverter converts strings.
  • ResourceHttpMessageConverter converts to/from org.springframework.core.io.Resource for all media types.
  • SourceHttpMessageConverter converts to/from a javax.xml.transform.Source.
  • FormHttpMessageConverter converts form data to/from a MultiValueMap<String, String>.
  • Jaxb2RootElementHttpMessageConverter converts Java objects to/from XML — added if JAXB2 is present on the classpath.
  • MappingJackson2HttpMessageConverter (or MappingJacksonHttpMessageConverter) converts to/from JSON — added if Jackson 2 (or Jackson) is present on the classpath.
  • AtomFeedHttpMessageConverter converts Atom feeds — added if Rome is present on the classpath.
  • RssChannelHttpMessageConverter converts RSS feeds — added if Rome is present on the classpath.

这是摘取的官方文档,可以看出,注册的类已经变成了RequestMappingHandlerMapping和 RequestMappingHandlerAdapter。

转自:mvc:annotation-driven 的变更

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值