18.16.1启用MVC Java Config或MVC XML命名空间

要启用MVC Java配置,请将注解@EnableWebMvc添加到其中一个@Configuration类中:

@Configuration
@EnableWebMvc
public class WebConfig {

}

要在XML中实现相同的效果,请在DispatcherServlet上下文中使用mvc:annotation-driven元素(如果没有定义DispatcherServlet上下文,则在根上下文中):

<?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>

上面注册了一个RequestMappingHandlerMapping,一个RequestMappingHandlerAdapter和一个ExceptionHandlerExceptionResolver(以及其他),以支持使用注解的控制器方法(如@RequestMapping@ExceptionHandler等)处理请求。

它还支持以下功能:

  1. 除了用于数据绑定的JavaBean PropertyEditor之外,还通过ConversionService实例进行Spring 3样式类型转换。

  2. 支持通过ConversionService使用@NumberFormat注解格式数字字段。

  3. 支持使用@DateTimeFormat注解格式Date,Calendar,Long和Joda时间字段。

  4. 如果JSR-303提供程序存在于类路径中,则支持validating使用@Valid验证@Controller输入。

  5. HttpMessageConverter支持@RequestBody方法参数和@ResponseBody方法从@RequestMapping@ExceptionHandler方法返回值。

    这是由mvc设置的HttpMessageConverters的完整列表:annotation-driven:

    1. ByteArrayHttpMessageConverter转换字节数组。

    2. StringHttpMessageConverter转换字符串。

    3. ResourceHttpMessageConverter为所有媒体类型转换为org.springframework.core.io.Resource

    4. SourceHttpMessageConverter转换为/从一个javax.xml.transform.Source

    5. FormHttpMessageConverter将表单数据转换为MultiValueMap或从MultiValueMap转换而来。

    6. Jaxb2RootElementHttpMessageConverter将Java对象转换为/从XML转换 - 如果存在JAXB2并且类路径中不存在Jackson 2 XML扩展,则添加它。

    7. MappingJackson2HttpMessageConverter转换为/从JSON - 如果Jackson 2存在于类路径中,则添加。

    8. MappingJackson2XmlHttpMessageConverter转换为/从XML - 如果Jackson 2 XML扩展存在于类路径中,则添加。

    9. MappingJackson2SmileHttpMessageConverterconverts to/from Smile (binary JSON) — added ifJackson 2 Smile extensionis present on the classpath.

    10. MappingJackson2SmileHttpMessageConverter转换为/从Smile(二进制JSON) - 添加如果Jackson 2 CBOR extension存在于类路径。

    11. AtomFeedHttpMessageConverter转换Atom提要 - 如果Rome出现在类路径中,则添加Atom提要。

    12. RssChannelHttpMessageConverter转换RSS源 - 如果Rome出现在类路径中,则添加。

    有关如何定制这些默认转换器的更多信息,请参见第18.16.12节“消息转换器”

Jackson JSON和XML转换器是使用Jackson2ObjectMapperBuilder创建的ObjectMapper实例创建的,以便提供更好的默认配置。此构建器使用以下几种方法自定义Jackson的默认属性:DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES被禁用。 MapperFeature.DEFAULT_VIEW_INCLUSION被禁用。如果在类路径中检测到以下模块,它将自动注册下列已知模块:jackson-datatype-jdk7:支持java.nio.file.Path等Java 7类型。jackson-datatype-joda:支持Joda-Time类型。jackson-datatype-jsr310:支持Java 8 Date&Time API类型。jackson-datatype-jdk8:支持其他Java 8类型,如Optional

results matching ""

    No results matching ""