springmvc configuration mvc:annotation-driven

In order to simplify springmvc configuration, spring also introduced mvc namespace, configured

<mvc:annotation-driven/>

Spring will register three beans, a RequestMappingHandlerMapping, a RequestMappingHandlerAdapter, and an ExceptionHandlerExceptionResolver by default, to support controllers decorated with annotations (@RequestMapping, @ExceptionHandler, @Controller, etc.) to process requests. It also has the following features:

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.

Configuration example:

 <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

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325499166&siteId=291194637