springmvc配置之mvc:annotation-driven

为了简化springmvc配置,spring同时引入了mvc namespace, 配置了

<mvc:annotation-driven/>

spring会默认注册a RequestMappingHandlerMapping, a RequestMappingHandlerAdapter, and an ExceptionHandlerExceptionResolver 三个bean, 来支持使用注解(@RequestMapping、@ExceptionHandler、@Controller等)修饰的controller处理请求。同时还有以下一些特性:

1、 Spring 3 style type conversion through a ConversionService instance in addition to the JavaBeans PropertyEditors used for Data Binding.
2、 Support for formatting Number fields using the @NumberFormat annotation through the ConversionService.
3、 Support for formatting Date, Calendar, Long, and Joda-Time fields using the @DateTimeFormat annotation.
4、 Support for validating @Controller inputs with @Valid, if a JSR-303 Provider is present on the classpath.
5、 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:

     a.   ByteArrayHttpMessageConverter converts byte arrays.
     b.  StringHttpMessageConverter converts strings.
     c.  ResourceHttpMessageConverter converts to/from org.springframework.core.io.Resource for all media types.
     d.   SourceHttpMessageConverter converts to/from a javax.xml.transform.Source.
     e.  FormHttpMessageConverter converts form data to/from a MultiValueMap<String, String>.
     f.  Jaxb2RootElementHttpMessageConverter converts Java objects to/from XML — added if JAXB2 is present and Jackson 2 XML extension is not present on the classpath.
     g.  MappingJackson2HttpMessageConverter converts to/from JSON — added if Jackson 2 is present on the classpath.
     h.  MappingJackson2XmlHttpMessageConverter converts to/from XML — added if Jackson 2 XML extension is present on the classpath.
     i.  AtomFeedHttpMessageConverter converts Atom feeds — added if Rome is present on the classpath.
     j.  RssChannelHttpMessageConverter converts RSS feeds — added if Rome is present on the classpath.

配置示例:

 <bean name="fastJson" class="com.alibaba.fastjson.support.config.FastJsonConfig">
        <property name="features">
            <list>
                <value>AllowSingleQuotes</value>
            </list>
        </property>
        <property name="serializerFeatures">
            <list>
                <value>QuoteFieldNames</value>
                <value>WriteEnumUsingToString</value>
                <value>WriteEnumUsingName</value>
                <value>WriteNullNumberAsZero</value>
                <value>SkipTransientField</value>
                <value>WriteDateUseDateFormat</value>
            </list>
        </property>
    </bean>

    <!--默认的mvc注解映射的支持 -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>application/json;charset=UTF-8</value>
                        <value>text/html;charset=UTF-8</value>
                        <value>text/json;charset=UTF-8</value>
                    </list>
                </property>
                <property name="fastJsonConfig" ref="fastJson"/>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

引用:
1、 springdoc
2、what's annotation-driven do

posted @ 2018-05-06 17:30  冰点猎手  阅读(568)  评论(0编辑  收藏  举报