public abstract class AbstractDispatcherServletInitializer extends AbstractContextLoaderInitializer
WebApplicationInitializer
implementations that register a DispatcherServlet
in the servlet context.
Concrete implementations are required to implement
createServletApplicationContext()
, as well as getServletMappings()
,
both of which get 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.
Modifier and Type | Field and Description |
---|---|
static String |
DEFAULT_SERVLET_NAME
The default servlet name.
|
logger
Constructor and Description |
---|
AbstractDispatcherServletInitializer() |
Modifier and Type | Method and Description |
---|---|
protected DispatcherServlet |
createDispatcherServlet(WebApplicationContext servletAppContext)
Create a
DispatcherServlet with the specified WebApplicationContext . |
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 ApplicationContextInitializer<?>[] |
getServletApplicationContextInitializers()
Specify application context initializers to be applied to the servlet-specific
application context that the
DispatcherServlet is being created with. |
protected Filter[] |
getServletFilters()
Specify filters to add and map to the
DispatcherServlet . |
protected abstract String[] |
getServletMappings()
Specify the servlet mapping(s) for the
DispatcherServlet —
for example "/" , "/app" , etc. |
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
|
createRootApplicationContext, getRootApplicationContextInitializers, registerContextLoaderListener
public static final String DEFAULT_SERVLET_NAME
getServletName()
.public AbstractDispatcherServletInitializer()
public void onStartup(ServletContext servletContext) throws ServletException
WebApplicationInitializer
ServletContext
with any servlets, filters, listeners
context-params and attributes necessary for initializing this web application. See
examples above.onStartup
in interface WebApplicationInitializer
onStartup
in class AbstractContextLoaderInitializer
servletContext
- the ServletContext
to initializeServletException
- if any call against the given ServletContext
throws a ServletException
protected void registerDispatcherServlet(ServletContext servletContext)
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)
or
createDispatcherServlet(WebApplicationContext)
.
servletContext
- the context to register the servlet againstprotected String getServletName()
DispatcherServlet
will be registered.
Defaults to DEFAULT_SERVLET_NAME
.protected abstract WebApplicationContext createServletApplicationContext()
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.
protected DispatcherServlet createDispatcherServlet(WebApplicationContext servletAppContext)
DispatcherServlet
with the specified WebApplicationContext
.protected ApplicationContextInitializer<?>[] getServletApplicationContextInitializers()
DispatcherServlet
is being created with.protected abstract String[] getServletMappings()
DispatcherServlet
—
for example "/"
, "/app"
, etc.protected Filter[] getServletFilters()
DispatcherServlet
.null
registerServletFilter(ServletContext, Filter)
protected FilterRegistration.Dynamic registerServletFilter(ServletContext servletContext, Filter filter)
DispatcherServlet
as follows:
asyncSupported
flag is set depending on the
return value of asyncSupported
REQUEST
,
FORWARD
, INCLUDE
, and conditionally ASYNC
depending
on the return value of asyncSupported
If the above defaults are not suitable or insufficient, override this
method and register filters directly with the ServletContext
.
servletContext
- the servlet context to register filters withfilter
- the filter to be registeredprotected boolean isAsyncSupported()
asyncSupported
flag for the
DispatcherServlet
and all filters added via getServletFilters()
.
The default value is "true".
protected void customizeRegistration(ServletRegistration.Dynamic registration)
registerDispatcherServlet(ServletContext)
has completed.registration
- the DispatcherServlet
registration to be customizedregisterDispatcherServlet(ServletContext)