org.springframework.web.context

## Class ContextLoaderListener

- java.lang.Object
- - org.springframework.web.context.ContextLoader
  - - org.springframework.web.context.ContextLoaderListener

- All Implemented Interfaces:
    EventListener, ServletContextListener

      public class ContextLoaderListener
      extends ContextLoader
      implements ServletContextListener

  Bootstrap listener to start up and shut down Spring's root `WebApplicationContext`. Simply delegates to `ContextLoader` as well as to `ContextCleanupListener`.

  This listener should be registered after `Log4jConfigListener` in `web.xml`, if the latter is used.

  As of Spring 3.1, `ContextLoaderListener` supports injecting the root web application context via the `ContextLoaderListener(WebApplicationContext)` constructor, allowing for programmatic configuration in Servlet 3.0+ environments. See `WebApplicationInitializer` for usage examples.

  Since:
    17.02.2003
  Author:
    Juergen Hoeller, Chris Beams
  See Also:
    `WebApplicationInitializer`, `Log4jConfigListener`

- - ### Field Summary

    - ### Fields inherited from class org.springframework.web.context.ContextLoader

      `CONFIG_LOCATION_PARAM, CONTEXT_CLASS_PARAM, CONTEXT_ID_PARAM, CONTEXT_INITIALIZER_CLASSES_PARAM, GLOBAL_INITIALIZER_CLASSES_PARAM, LOCATOR_FACTORY_KEY_PARAM, LOCATOR_FACTORY_SELECTOR_PARAM`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ContextLoaderListener()` Create a new `ContextLoaderListener` that will create a web application context based on the "contextClass" and "contextConfigLocation" servlet context-params.
    `ContextLoaderListener(WebApplicationContext context)` Create a new `ContextLoaderListener` with the given application context.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `contextDestroyed(ServletContextEvent event)` Close the root web application context.
    `void` | `contextInitialized(ServletContextEvent event)` Initialize the root web application context.

    - ### Methods inherited from class org.springframework.web.context.ContextLoader

      `closeWebApplicationContext, configureAndRefreshWebApplicationContext, createWebApplicationContext, createWebApplicationContext, customizeContext, determineContextClass, determineContextInitializerClasses, getCurrentWebApplicationContext, initWebApplicationContext, loadParentContext`

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

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

- - ### Constructor Detail

    - #### ContextLoaderListener

          public ContextLoaderListener()

      Create a new `ContextLoaderListener` that will create a web application context based on the "contextClass" and "contextConfigLocation" servlet context-params. See `ContextLoader` superclass documentation for details on default values for each.

      This constructor is typically used when declaring `ContextLoaderListener` as a `<listener>` within `web.xml`, where a no-arg constructor is required.

      The created application context will be registered into the ServletContext under the attribute name `WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE` and the Spring application context will be closed when the `contextDestroyed(javax.servlet.ServletContextEvent)` lifecycle method is invoked on this listener.

      See Also:
        `ContextLoader`, `ContextLoaderListener(WebApplicationContext)`, `contextInitialized(ServletContextEvent)`, `contextDestroyed(ServletContextEvent)`

    - #### ContextLoaderListener

          public ContextLoaderListener(WebApplicationContext context)

      Create a new `ContextLoaderListener` with the given application context. This constructor is useful in Servlet 3.0+ environments where instance-based registration of listeners is possible through the `ServletContext.addListener(java.lang.String)` API.

      The context may or may not yet be refreshed. If it (a) is an implementation of `ConfigurableWebApplicationContext` and (b) has not already been refreshed (the recommended approach), then the following will occur:

      - If the given context has not already been assigned an id, one will be assigned to it
      - `ServletContext` and `ServletConfig` objects will be delegated to the application context
      - `ContextLoader.customizeContext(javax.servlet.ServletContext, org.springframework.web.context.ConfigurableWebApplicationContext)` will be called
      - Any `ApplicationContextInitializer`s specified through the "contextInitializerClasses" init-param will be applied.
      - `refresh()` will be called
      If the context has already been refreshed or does not implement `ConfigurableWebApplicationContext`, none of the above will occur under the assumption that the user has performed these actions (or not) per his or her specific needs.

      See `WebApplicationInitializer` for usage examples.

      In any case, the given application context will be registered into the ServletContext under the attribute name `WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE` and the Spring application context will be closed when the `contextDestroyed(javax.servlet.ServletContextEvent)` lifecycle method is invoked on this listener.

      Parameters:
        `context` - the application context to manage
      See Also:
        `contextInitialized(ServletContextEvent)`, `contextDestroyed(ServletContextEvent)`

  - ### Method Detail

    - #### contextInitialized

          public void contextInitialized(ServletContextEvent event)

      Initialize the root web application context.
      Specified by:
        `contextInitialized` in interface `ServletContextListener`

    - #### contextDestroyed

          public void contextDestroyed(ServletContextEvent event)

      Close the root web application context.
      Specified by:
        `contextDestroyed` in interface `ServletContextListener`