From b95550489b1d0e3dba2e52b9e1862bbd1cf60ba3 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Thu, 23 Aug 2012 13:31:32 -0400 Subject: [PATCH] Add "New in Spring 3.2" section to reference docs --- src/reference/docbook/index.xml | 1 + src/reference/docbook/new-in-3.2.xml | 166 +++++++++++++++++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 src/reference/docbook/new-in-3.2.xml diff --git a/src/reference/docbook/index.xml b/src/reference/docbook/index.xml index 5ff08474ad..50b859a38a 100644 --- a/src/reference/docbook/index.xml +++ b/src/reference/docbook/index.xml @@ -243,6 +243,7 @@ + diff --git a/src/reference/docbook/new-in-3.2.xml b/src/reference/docbook/new-in-3.2.xml new file mode 100644 index 0000000000..ab5baf5dfa --- /dev/null +++ b/src/reference/docbook/new-in-3.2.xml @@ -0,0 +1,166 @@ + + + New Features and Enhancements in Spring 3.2 + +
+ Overview of new features + +
+ Support for Servlet 3 based asynchronous request processing + + The Spring MVC programming model now provides explicit Servlet 3 async support. + @RequestMapping methods can return one of: + + + + java.util.concurrent.Callable to + complete processing in a separate thread managed by a task executor + within Spring MVC. + + + org.springframework.web.context.request.async.DeferredResult + to complete processing at a later time from a thread not known to + Spring MVC, e.g. in response to some external event (JSM, AMQP, etc.) + + + org.springframework.web.context.request.async.AsyncTask + to wrap a Callable and + customize the timeout value or the task executor to use. + + + + See + Introducing Servlet 3 Async Support (SpringSource team blog). + +
+ +
+ Content negotiation improvements + + A ContentNeogtiationStrategy is now + available for resolving the requested media types from an incoming request. + The available implementations are based on path extension, request parameter, + 'Accept' header, and a fixed default content type. Equivalent options were + previously available only in the ContentNegotiatingViewResolver but are now + available throughout. + + ContentNegotiationManager is the central class to + use when configuring content negotiation options. It accepts one or + more ContentNeogtiationStrategy instances and delegates to them. It can be + plugged into RequestMappingHandlerMapping, + RequestMappingHandlerAdapter, + ExceptionHandlerExceptionResolver, + and ContentNegotiatingViewResolver. The MVC + namespace and the MVC Java config provide convenient options to configure + all that. + + The introduction of ContentNegotiationManger + also enables smart suffix pattern matching for incoming requests. + See + commit message + +
+ +
+ <interfacename>@ControllerAdvice</interfacename> annotation + + Classes annotated with @ControllerAdvice + can contain @ExceptionHandler, + @InitBinder, and + @ModelAttribute methods and those will apply + to @RequestMapping methods across controller + hierarchies as opposed to the controller hierarchy within which they are declared. + @ControllerAdvice is + a component annotation allowing implementation classes to be auto-detected + through classpath scanning. + +
+ +
+ <classname>ExceptionHandlerSupport</classname> class + + A convenient base class with an + @ExceptionHandler + method that handles standard Spring MVC exceptions, just as the + DefaultHandlerExceptionResolver does, but also + allowing you to prepare error content for the body of the response. + +
+ +
+ Support for generic types in the <classname>RestTemplate</classname> and in + <interfacename>@RequestBody</interfacename> arguments + + The RestTemplate can now read an HTTP + response to a generic type (e.g. List<Account>). + There are three new exchange() methods that accept + ParameterizedTypeReference, a + new class that enables capturing and passing generic type info. + + In support of this feature, the HttpMessageConverter + is extended by GenericHttpMessageConverter + adding a method for reading content given a specified parameterized type. + The new interface is implemented by the + MappingJacksonHttpMessageConverter and also + by a new Jaxb2CollectionHttpMessageConverter that can + read read a generic Collection where the + generic type is a JAXB type annotated with + @XmlRootElement or + @XmlType. + +
+ +
+ Jackson JSON 2 and related improvements + + The Jackson Json 2 library is now supported. Due to packaging changes in + the Jackson library, there are separate classes in Spring MVC as well. Those are + MappingJackson2HttpMessageConverter and + MappingJackson2JsonView. + Other related configuration improvements include support for + pretty printing as well as a + JacksonObjectMapperFactoryBean for convenient + customization of an ObjectMapper in + XML configuration. + +
+ +
+ <interfacename>@RequestBody</interfacename> improvements + + An @RequestBody or an + @RequestPart argument can now be followed by an + Errors argument making it possible to handle + validation errors (as a result of an @Valid + annotation) locally within the @RequestMapping method. + @RequestBody now also supports + a required flag. + +
+ +
+ HTTP PATCH method + + The HTTP request method PATCH may now be used in + @RequestMapping methods as well as in + the RestTemplate in conjunction with + Apache HttpComponents HttpClient version 4.2 or later. + The JDK HttpURLConnection does not support the + PATCH method. + +
+ +
+ Excluded patterns in mapped interceptors + + Mapped interceptors now support URL patterns to be excluded. + The MVC namespace and the MVC Java config both expose these options. + +
+ +
+
-- GitLab