org.springframework.web.servlet.support

## Class AbstractDispatcherServletInitializer

- java.lang.Object
- - org.springframework.web.context.AbstractContextLoaderInitializer
  - - org.springframework.web.servlet.support.AbstractDispatcherServletInitializer

All Implemented Interfaces:
  WebApplicationInitializer

Direct Known Subclasses:
  AbstractAnnotationConfigDispatcherServletInitializer

    public abstract class AbstractDispatcherServletInitializer
    extends AbstractContextLoaderInitializer

Base class for `WebApplicationInitializer` implementations that register a `DispatcherServlet` in the servlet context.

Concrete implementations are required to implement `createServletApplicationContext()`, as well as `getServletMappings()`, both of which gets invoked from `registerDispatcherServlet(ServletContext)`. Further customization can be achieved by overriding `customizeRegistration(ServletRegistration.Dynamic)`.

Because this class extends from `AbstractContextLoaderInitializer`, concrete implementations are also required to implement `AbstractContextLoaderInitializer.createRootApplicationContext()` to set up a parent "root" application context. If a root context is not desired, implementations can simply return `null` in the `createRootApplicationContext()` implementation.

Since:
  3.2
Author:
  Arjen Poutsma, Chris Beams, Rossen Stoyanchev

### Field Summary

Fields
`static String` `DEFAULT_SERVLET_NAME` The default servlet name.

### Fields inherited from class org.springframework.web.context.AbstractContextLoaderInitializer

`logger`

### Constructor Summary

Constructors
Constructor and Description
`AbstractDispatcherServletInitializer()`

### Method Summary

Methods
`protected abstract WebApplicationContext` `createServletApplicationContext()` Create a servlet application context to be provided to the `DispatcherServlet`.
`protected void` `customizeRegistration(ServletRegistration.Dynamic registration)` Optionally perform further registration customization once `registerDispatcherServlet(ServletContext)` has completed.
`protected Filter[]` `getServletFilters()` Specify filters to add and also map to the `DispatcherServlet`.
`protected abstract String[]` `getServletMappings()` Specify the servlet mapping(s) for the `DispatcherServlet`, e.g.
`protected String` `getServletName()` Return the name under which the `DispatcherServlet` will be registered.
`protected boolean` `isAsyncSupported()` A single place to control the `asyncSupported` flag for the `DispatcherServlet` and all filters added via `getServletFilters()`.
`void` `onStartup(ServletContext servletContext)` Configure the given `ServletContext` with any servlets, filters, listeners context-params and attributes necessary for initializing this web application.
`protected void` `registerDispatcherServlet(ServletContext servletContext)` Register a `DispatcherServlet` against the given servlet context.

`protected FilterRegistration.Dynamic`

`registerServletFilter(ServletContext servletContext, Filter filter)`
Add the given filter to the ServletContext and map it to the `DispatcherServlet` as follows: a default filter name is chosen based on its concrete type the `asyncSupported` flag is set depending on the return value of `asyncSupported` a filter mapping is created with dispatcher types `REQUEST`, `FORWARD`, `INCLUDE`, and conditionally `ASYNC` depending on the return value of `asyncSupported`

### Methods inherited from class org.springframework.web.context.AbstractContextLoaderInitializer

`createRootApplicationContext, registerContextLoaderListener`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### DEFAULT_SERVLET_NAME

    public static final String DEFAULT_SERVLET_NAME

The default servlet name. Can be customized by overriding `getServletName()`.

See Also:
  Constant Field Values

### Constructor Detail

#### AbstractDispatcherServletInitializer

    public AbstractDispatcherServletInitializer()

### Method Detail

#### onStartup

    public void onStartup(ServletContext servletContext)
                   throws ServletException

Description copied from interface: `WebApplicationInitializer`
Configure the given `ServletContext` with any servlets, filters, listeners context-params and attributes necessary for initializing this web application. See examples above.

Specified by:
  `onStartup` in interface `WebApplicationInitializer`
Overrides:
  `onStartup` in class `AbstractContextLoaderInitializer`
Parameters:
  `servletContext` - the `ServletContext` to initialize
Throws:
  `ServletException` - if any call against the given `ServletContext` throws a `ServletException`

#### registerDispatcherServlet

    protected void registerDispatcherServlet(ServletContext servletContext)

Register a `DispatcherServlet` against the given servlet context.

This method will create a `DispatcherServlet` with the name returned by `getServletName()`, initializing it with the application context returned from `createServletApplicationContext()`, and mapping it to the patterns returned from `getServletMappings()`.

Further customization can be achieved by overriding `customizeRegistration(ServletRegistration.Dynamic)`.

Parameters:
  `servletContext` - the context to register the servlet against

#### getServletName

    protected String getServletName()

Return the name under which the `DispatcherServlet` will be registered. Defaults to `DEFAULT_SERVLET_NAME`.

See Also:
  `registerDispatcherServlet(ServletContext)`

#### createServletApplicationContext

    protected abstract WebApplicationContext createServletApplicationContext()

Create a servlet application context to be provided to the `DispatcherServlet`.

The returned context is delegated to Spring's `DispatcherServlet.DispatcherServlet(WebApplicationContext)` As such, it typically contains controllers, view resolvers, locale resolvers, and other web-related beans.

See Also:
  `registerDispatcherServlet(ServletContext)`

#### getServletMappings

    protected abstract String[] getServletMappings()

Specify the servlet mapping(s) for the `DispatcherServlet`, e.g. '/', '/app', etc.

See Also:
  `registerDispatcherServlet(ServletContext)`

#### getServletFilters

    protected Filter[] getServletFilters()

Specify filters to add and also map to the `DispatcherServlet`.

Returns:
  an array of filters or `null`
See Also:
  `registerServletFilter(ServletContext, Filter)`

#### registerServletFilter

    protected FilterRegistration.Dynamic registerServletFilter(ServletContext servletContext,
                                                   Filter filter)

Add the given filter to the ServletContext and map it to the `DispatcherServlet` as follows:

- a default filter name is chosen based on its concrete type
- the `asyncSupported` flag is set depending on the return value of `asyncSupported`
- a filter mapping is created with dispatcher types `REQUEST`, `FORWARD`, `INCLUDE`, and conditionally `ASYNC` depending on the return value of `asyncSupported`

If the above defaults are not suitable or insufficient, register filters directly with the `ServletContext`.

Parameters:
  `servletContext` - the servlet context to register filters with
  `filter` - the filter to be registered
Returns:
  the filter registration

#### isAsyncSupported

    protected boolean isAsyncSupported()

A single place to control the `asyncSupported` flag for the `DispatcherServlet` and all filters added via `getServletFilters()`.

The default value is "true".

#### customizeRegistration

    protected void customizeRegistration(ServletRegistration.Dynamic registration)

Optionally perform further registration customization once `registerDispatcherServlet(ServletContext)` has completed.

Parameters:
  `registration` - the `DispatcherServlet` registration to be customized
See Also:
  `registerDispatcherServlet(ServletContext)`