21.16.1 启用MVC Java编程配置或MVC命名空间

    要启用XML命名空间,请在你的DispatcherServlet上下文中(如果没有定义任何DispatcherServlet上下文,那么就在根上下文中)添加一个mvc:annotation-driven元素:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:mvc="http://www.springframework.org/schema/mvc"
    4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    5. xsi:schemaLocation="
    6. http://www.springframework.org/schema/beans
    7. http://www.springframework.org/schema/beans/spring-beans.xsd
    8. http://www.springframework.org/schema/mvc
    9. http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    10. </beans>

    上面的简单的声明代码,就已经默认注册了一个RequestMappingHandlerMapping、一个RequestMappingHandlerAdapter,以及一个,以支持对使用了@RequestMapping及其他注解的控制器方法的请求处理。

    同时,上面的代码还启用了以下的特性:

    1. Spring 3风格的类型转换支持。这是使用一个配置的转换服务ConversionService实例,以及the JavaBeans PropertyEditors used for Data Binding.
    2. 使用对数字字段进行格式化,类型转换由ConversionService实现
    3. 使用注解对DateCalendarLong及Joda Time类型的字段进行格式化
    4. 使用注解对@Controller输入进行——前提是classpath路径下比如提供符合JSR-303规范的验证器
    5. HTTP消息转换HttpMessageConverter的支持,对注解了@RequestMapping方法的@RequestBody方法参数或返回值生效

    下面给出了一份由mvc:annotation-driven注册可用的HTTP消息转换器的完整列表:

    1. 转换字节数组的ByteArrayHttpMessageConverter
    2. 转换字符串的
    3. ResourceHttpMessageConverterorg.springframework.core.io.Resource与所有媒体类型之间的互相转换
    4. FormHttpMessageConverter:数据与MultiValueMap<String, String>之间的互相转换
    5. Jaxb2RootElementHttpMessageConverter:Java对象与XML之间的互相转换——该转换器在classpath路径下有JAXB2依赖并且没有Jackson 2 XML扩展时被注册
    6. MappingJackson2HttpMessageConverter:从(到)JSON的转换——该转换器在classpath下有Jackson 2依赖时被注册
    7. MappingJackson2XmlHttpMessageConverter:从(到)XML的转换——该转换器在classpath下有Jackson 2 XML扩展时被注册
    8. AtomFeedHttpMessageConverter:Atom源的转换——该转换器在classpath路径下有Rome时被注册
    9. RssChannelHttpMessageConverter:RSS源的转换——该转换器在classpath路径下有Rome时被注册