针对Spring MVC的功能增强:
自动绑定路径变量到模型属性中;提供了@RequestMappingproduces和consumes属性,用于匹配请求中的Accept和Content-Type头部信息;提供了@RequestPart注解,用于将multipart请求中的某些部分绑定到处理器的方法参数中;支持Flash属性(在redirect请求之后依然能够存活的属性)以及用于在请求间存放flash属性的RedirectAttributes类型。Spring 3.2是主要关注Spring MVC的一个发布版本:
Spring 3.2的控制器(Controller)可以使用Servlet 3.0的异步请求,允许在一个独立的线程中处理请求,从而将Servlet线程解放出来处理更多的请求;尽管从Spring 2.5开始,Spring MVC控制器就能以POJO的形式进行很便利地测试,但是Spring 3.2引入了Spring MVC测试框架,用于为控制器编写更为丰富的测试,断言它们作为控制器的行为是否正确,而且在使用的过程中并不需要Servlet容器;除了提升控制器的测试功能,Spring 3.2还包含了基于RestTemplate的客户端的测试支持,在测试的过程中,不需要往真正的REST端点上发送请求;@ControllerAdvice注解能够将通用的@ExceptionHandler、@ InitBinder和@ModelAttributes方法收集到一个类中,并应用到所有控制器上;在Spring 3.2之前,只能通过ContentNegotiatingViewResolver使用完整的内容协商(full content negotiation)功能。但是在Spring 3.2中,完整的内容协商功能可以在整个Spring MVC中使用,即便是依赖于消息转换器(message converter)使用和产生内容的控制器方法也能使用该功能;Spring MVC 3.2包含了一个新的@MatrixVariable注解,这个注解能够将请求中的矩阵变量(matrix variable)绑定到处理器的方法参数中;基础的抽象类AbstractDispatcherServletInitializer能够非常便利地配置DispatcherServlet,而不必再使用web.xml。与之类似,当你希望通过基于Java的方式来配置Spring的时候,可以使用Abstract-AnnotationConfigDispatcherServletInitializer的子类;新增了ResponseEntityExceptionHandler,可以用来替代Default- HandlerException Resolver。ResponseEntityExceptionHandler方法会返回ResponseEntity,而不是ModelAndView;RestTemplate和@RequestBody的参数可以支持范型;RestTemplate和@RequestMapping可以支持HTTP PATCH方法;在拦截器匹配时,支持使用URL模式将其排除在拦截器的处理功能之外。非MVC的功能改善:
@Autowired、@Value和@Bean注解能够作为元注解,用于创建自定义的注入和bean声明注解;@DateTimeFormat注解不再强依赖JodaTime。如果提供了JodaTime,就会使用它,否则的话,会使用SimpleDateFormat;Spring的声明式缓存提供了对JCache 0.5的支持;支持定义全局的格式来解析和渲染日期与时间;在集成测试中,能够配置和加载WebApplicationContext;在集成测试中,能够针对request和session作用域的bean进行测试。