Looks for a "contextClass" parameter at the web.xml context-param level to specify the context class type, falling back to the default of XmlWebApplicationContext if not found. With the default ContextLoader implementation, any context class specified needs to implement ConfigurableWebApplicationContext.
Passes a "contextConfigLocation" context-param to the context instance, parsing it into potentially multiple file paths which can be separated by any number of commas and spaces, like "applicationContext1.xml, applicationContext2.xml". If not explicitly specified, the context implementation is supposed to use a default location (with XmlWebApplicationContext: "/WEB-INF/applicationContext.xml").
Note: In case of multiple config locations, later bean definitions will override ones defined in earlier loaded files, at least when using one of Spring's default ApplicationContext implementations. This can be leveraged to deliberately override certain bean definitions via an extra XML file.
Above and beyond loading the root application context, this class can optionally load or obtain and hook up a shared parent context to the root application context. See the loadParentContext(ServletContext) method for more information.
| Field Summary | |
|---|---|
| static String |
Name of servlet context parameter that can specify the config location for the root context, falling back to the implementation's default otherwise. |
| static String |
Config param for the root WebApplicationContext implementation class to use: "contextClass" |
| static String |
Optional servlet context parameter used only when obtaining a parent context using the default implementation of loadParentContext(ServletContext) . |
| static String |
Optional servlet context parameter used only when obtaining a parent context using the default implementation of loadParentContext(ServletContext) . |
| Constructor Summary |
|---|
|
No description provided. |
| Method Summary | |
|---|---|
| void |
Close Spring's web application context for the given servlet context. |
| protected WebApplicationContext |
Instantiate the root WebApplicationContext for this loader, either the default context class or a custom context class if specified. |
| protected Class |
Return the WebApplicationContext implementation class to use, either the default XmlWebApplicationContext or a custom context class if specified. |
| WebApplicationContext |
Initialize Spring's web application context for the given servlet context, according to the "contextClass" and "contextConfigLocation" context-params. |
| protected ApplicationContext |
Template method with default implementation (which may be overridden by a subclass), to load or obtain an ApplicationContext instance which will be used as the parent context of the root WebApplicationContext. |
| Methods inherited from java.langObject |
|---|
This will normally be set to classpath*:beanRefContext.xml
to match the default applied for the
getInstance() method.
If overriding loadParentContext(ServletContext) , you may have to override this method as well.
protected
WebApplicationContext
createWebApplicationContext
(
ServletContext
servletContext,
ApplicationContext
parent
)
This implementation expects custom contexts to implement ConfigurableWebApplicationContext. Can be overridden in subclasses.
The main reason to load a parent context here is to allow multiple root web application contexts to all be children of a shared EAR context, or alternately to also share the same parent context that is visible to EJBs. For pure web applications, there is usually no need to worry about having a parent context to the root web application context.
The default implementation uses ContextSingletonBeanFactoryLocator, configured via LOCATOR_FACTORY_SELECTOR_PARAM and LOCATOR_FACTORY_KEY_PARAM , to load a parent context which will be shared by all other users of ContextsingletonBeanFactoryLocator which also use the same configuration parameters.