DispatcherServlet delegates authority to specialized beans so that they process requests and issue appropriate responses. By "specialized beans" we mean Spring-managed Object instances that implement the framework's contracts. They usually come with built-in contracts, but you can customize their properties, extend them, or replace them.

The following table lists the specialized beans discovered by DispatcherServlet:

Bean type Explanation

HandlerMapping

Displays a request for a handler along with a list of interceptors for pre- and post-processing. The mapping is based on some criteria, the details of which depend on the HandlerMapping implementation.

The two main implementations of HandlerMapping are RequestMappingHandlerMapping (which supports methods annotated with @RequestMapping) and SimpleUrlHandlerMapping (which continuously explicitly registers URI path patterns for handlers).

HandlerAdapter

Helps DispatcherServlet call the handler mapped to the request, regardless of how the handler is actually called. For example, calling an annotated controller requires annotation resolution. The main purpose of the HandlerAdapter is to shield the DispatcherServlet from such details.

HandlerExceptionResolver

A strategy for recognizing exceptions, by possibly mapping them to handlers, presenting errors to HTML, or other targets.

ViewResolver

Recognizes logical view names based on the String returned by the handler with the actual View that will be rendered in the response.

LocaleResolver, LocaleContextResolver

Recognizes the Locale that the client is using, and possibly its time zone, to provide internationalized views.

ThemeResolver

Recognizes themes that your web application might use—for example, to offer personalized layouts.

MultipartResolver

An abstraction for parsing a multi-part request (for example, uploading a file from a browser form) using some multi-part request parsing library.

FlashMapManager

Store and receive an "input" and "output" FlashMap that can be used to pass attributes from one request to another, typically via redirection.