Class SpringServletContainerInitializer
- All Implemented Interfaces:
- ServletContainerInitializer
ServletContainerInitializer designed to support code-based
 configuration of the servlet container using Spring's WebApplicationInitializer
 SPI as opposed to (or possibly in combination with) the traditional
 web.xml-based approach.
 Mechanism of Operation
This class will be loaded and instantiated and have itsonStartup(java.util.Set<java.lang.Class<?>>, jakarta.servlet.ServletContext)
 method invoked by any Servlet-compliant container during container startup assuming
 that the spring-web module JAR is present on the classpath. This occurs through
 the JAR Services API ServiceLoader.load(Class) method detecting the
 spring-web module's META-INF/services/jakarta.servlet.ServletContainerInitializer
 service provider configuration file.
 In combination with web.xml
 A web application can choose to limit the amount of classpath scanning the Servlet
 container does at startup either through the metadata-complete attribute in
 web.xml, which controls scanning for Servlet annotations or through an
 <absolute-ordering> element also in web.xml, which controls which
 web fragments (i.e. jars) are allowed to perform a ServletContainerInitializer
 scan. When using this feature, the SpringServletContainerInitializer
 can be enabled by adding "spring_web" to the list of named web fragments in
 web.xml as follows:
 <absolute-ordering> <name>some_web_fragment</name> <name>spring_web</name> </absolute-ordering>
Relationship to Spring's WebApplicationInitializer
 Spring's WebApplicationInitializer SPI consists of just one method:
 WebApplicationInitializer.onStartup(ServletContext). The signature is intentionally
 quite similar to ServletContainerInitializer.onStartup(Set, ServletContext):
 simply put, SpringServletContainerInitializer is responsible for instantiating
 and delegating the ServletContext to any user-defined
 WebApplicationInitializer implementations. It is then the responsibility of
 each WebApplicationInitializer to do the actual work of initializing the
 ServletContext. The exact process of delegation is described in detail in the
 onStartup documentation below.
 General Notes
In general, this class should be viewed as supporting infrastructure for the more important and user-facingWebApplicationInitializer SPI. Taking
 advantage of this container initializer is also completely optional:
 while it is true that this initializer will be loaded and invoked under all
 Servlet runtimes, it remains the user's choice whether to make any
 WebApplicationInitializer implementations available on the classpath.
 If no WebApplicationInitializer types are detected, this container
 initializer will have no effect.
 Note that use of this container initializer and of WebApplicationInitializer
 is not in any way "tied" to Spring MVC other than the fact that the types are shipped
 in the spring-web module JAR. Rather, they can be considered general-purpose
 in their ability to facilitate convenient code-based configuration of the
 ServletContext. In other words, any servlet, listener, or filter may be
 registered within a WebApplicationInitializer, not just Spring MVC-specific
 components.
 
This class is neither designed for extension nor intended to be extended.
 It should be considered an internal type, with WebApplicationInitializer
 being the public-facing SPI.
 
See Also
SeeWebApplicationInitializer Javadoc for examples and detailed usage
 recommendations.- Since:
- 3.1
- Author:
- Chris Beams, Juergen Hoeller, Rossen Stoyanchev
- See Also:
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidonStartup(Set<Class<?>> webAppInitializerClasses, ServletContext servletContext) Delegate theServletContextto anyWebApplicationInitializerimplementations present on the application classpath.
- 
Constructor Details- 
SpringServletContainerInitializerpublic SpringServletContainerInitializer()
 
- 
- 
Method Details- 
onStartuppublic void onStartup(@Nullable Set<Class<?>> webAppInitializerClasses, ServletContext servletContext) throws ServletException Delegate theServletContextto anyWebApplicationInitializerimplementations present on the application classpath.Because this class declares @ HandlesTypes(WebApplicationInitializer.class), Servlet containers will automatically scan the classpath for implementations of Spring'sWebApplicationInitializerinterface and provide the set of all such types to thewebAppInitializerClassesparameter of this method.If no WebApplicationInitializerimplementations are found on the classpath, this method is effectively a no-op. An INFO-level log message will be issued notifying the user that theServletContainerInitializerhas indeed been invoked but that noWebApplicationInitializerimplementations were found.Assuming that one or more WebApplicationInitializertypes are detected, they will be instantiated (and sorted if the @@Orderannotation is present or theOrderedinterface has been implemented). Then theWebApplicationInitializer.onStartup(ServletContext)method will be invoked on each instance, delegating theServletContextsuch that each instance may register and configure servlets such as Spring'sDispatcherServlet, listeners such as Spring'sContextLoaderListener, or any other Servlet API features such as filters.- Specified by:
- onStartupin interface- ServletContainerInitializer
- Parameters:
- webAppInitializerClasses- all implementations of- WebApplicationInitializerfound on the application classpath
- servletContext- the servlet context to be initialized
- Throws:
- ServletException
- See Also:
 
 
-