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, 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

Methods
`void` `contextDestroyed(ServletContextEvent event)` Close the root web application context.
`void` `contextInitialized(ServletContextEvent event)` Initialize the root web application context.
`protected ContextLoader` `createContextLoader()` Deprecated. in favor of simply subclassing ContextLoaderListener itself (which extends ContextLoader, as of Spring 3.0)
`ContextLoader` `getContextLoader()` Deprecated. in favor of simply subclassing ContextLoaderListener itself (which extends ContextLoader, as of Spring 3.0)

### 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`

#### createContextLoader

    @Deprecated
    protected ContextLoader createContextLoader()

Deprecated. in favor of simply subclassing ContextLoaderListener itself (which extends ContextLoader, as of Spring 3.0)
Create the ContextLoader to use. Can be overridden in subclasses.

Returns:
  the new ContextLoader

#### getContextLoader

    @Deprecated
    public ContextLoader getContextLoader()

Deprecated. in favor of simply subclassing ContextLoaderListener itself (which extends ContextLoader, as of Spring 3.0)
Return the ContextLoader used by this listener.

Returns:
  the current ContextLoader

#### contextDestroyed

    public void contextDestroyed(ServletContextEvent event)

Close the root web application context.

Specified by:
  `contextDestroyed` in interface `ServletContextListener`