|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.web.context.ContextLoader
public class ContextLoader
Performs the actual initialization work for the root application context.
Called by ContextLoaderListener
and ContextLoaderServlet
.
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.
ContextLoaderListener
,
ContextLoaderServlet
,
ConfigurableWebApplicationContext
,
XmlWebApplicationContext
Field Summary | |
---|---|
static String |
CONFIG_LOCATION_PARAM
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 |
CONTEXT_CLASS_PARAM
Config param for the root WebApplicationContext implementation class to use: "contextClass" |
static String |
LOCATOR_FACTORY_KEY_PARAM
Optional servlet context parameter used only when obtaining a parent context using the default implementation of loadParentContext(ServletContext servletContext) . |
static String |
LOCATOR_FACTORY_SELECTOR_PARAM
Optional servlet context parameter used only when obtaining a parent context using the default implementation of loadParentContext(ServletContext servletContext) . |
Constructor Summary | |
---|---|
ContextLoader()
|
Method Summary | |
---|---|
void |
closeWebApplicationContext(ServletContext servletContext)
Close Spring's web application context for the given servlet context. |
protected WebApplicationContext |
createWebApplicationContext(ServletContext servletContext,
ApplicationContext parent)
Instantiate the root WebApplicationContext for this loader, either the default context class or a custom context class if specified. |
protected Class |
determineContextClass(ServletContext servletContext)
Return the WebApplicationContext implementation class to use, either the default XmlWebApplicationContext or a custom context class if specified. |
WebApplicationContext |
initWebApplicationContext(ServletContext servletContext)
Initialize Spring's web application context for the given servlet context, according to the "contextClass" and "contextConfigLocation" context-params. |
protected ApplicationContext |
loadParentContext(ServletContext servletContext)
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 class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String CONTEXT_CLASS_PARAM
public static final String CONFIG_LOCATION_PARAM
public static final String LOCATOR_FACTORY_SELECTOR_PARAM
loadParentContext(ServletContext servletContext)
.
Specifies the 'selector' used in the
ContextSingletonBeanFactoryLocator.getInstance(String selector)
method call used to obtain the BeanFactoryLocator instance from which
the parent context is obtained.
The default is classpath*:beanRefContext.xml
,
matching the default applied for the
ContextSingletonBeanFactoryLocator.getInstance()
method.
Supplying the "parentContextKey" parameter is sufficient in this case.
public static final String LOCATOR_FACTORY_KEY_PARAM
loadParentContext(ServletContext servletContext)
.
Specifies the 'factoryKey' used in the
BeanFactoryLocator.useBeanFactory(String factoryKey)
method call,
obtaining the parent application context from the BeanFactoryLocator instance.
Supplying this "parentContextKey" parameter is sufficient when relying
on the default classpath*:beanRefContext.xml
selector for
candidate factory references.
Constructor Detail |
---|
public ContextLoader()
Method Detail |
---|
public WebApplicationContext initWebApplicationContext(ServletContext servletContext) throws IllegalStateException, BeansException
servletContext
- current servlet context
IllegalStateException
- if there is already a root application context present
BeansException
- if the context failed to initializeCONTEXT_CLASS_PARAM
,
CONFIG_LOCATION_PARAM
protected WebApplicationContext createWebApplicationContext(ServletContext servletContext, ApplicationContext parent) throws BeansException
This implementation expects custom contexts to implement ConfigurableWebApplicationContext. Can be overridden in subclasses.
servletContext
- current servlet contextparent
- the parent ApplicationContext to use, or null
if none
BeansException
- if the context couldn't be initializedConfigurableWebApplicationContext
protected Class determineContextClass(ServletContext servletContext) throws ApplicationContextException
servletContext
- current servlet context
ApplicationContextException
- if the context class couldn't be loadedCONTEXT_CLASS_PARAM
,
XmlWebApplicationContext
protected ApplicationContext loadParentContext(ServletContext servletContext) throws BeansException
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.
servletContext
- current servlet context
null
if none
BeansException
- if the context couldn't be initializedContextSingletonBeanFactoryLocator
public void closeWebApplicationContext(ServletContext servletContext)
loadParentContext(ServletContext)
implementation,
which uses ContextSingletonBeanFactoryLocator, has loaded any shared
parent context, release one reference to that shared parent context.
If overriding loadParentContext(ServletContext)
, you may have
to override this method as well.
servletContext
- the ServletContext that the WebApplicationContext runs in
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |