public abstract class AbstractRefreshableWebApplicationContext extends AbstractRefreshableConfigApplicationContext implements ConfigurableWebApplicationContext, ThemeSource
AbstractRefreshableApplicationContext
subclass which implements the
ConfigurableWebApplicationContext
interface for web environments. Provides a "configLocations" property,
to be populated through the ConfigurableWebApplicationContext interface
on web application startup.
This class is as easy to subclass as AbstractRefreshableApplicationContext:
All you need to implements is the AbstractRefreshableApplicationContext.loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)
method;
see the superclass javadoc for details. Note that implementations are supposed
to load bean definitions from the files specified by the locations returned
by the getConfigLocations()
method.
Interprets resource paths as servlet context resources, i.e. as paths beneath
the web application root. Absolute paths, e.g. for files outside the web app root,
can be accessed via "file:" URLs, as implemented by
DefaultResourceLoader
.
In addition to the special beans detected by
AbstractApplicationContext
,
this class detects a bean of type ThemeSource
in the context, under the special bean name "themeSource".
This is the web context to be subclassed for a different bean definition format.
Such a context implementation can be specified as "contextClass" context-param
for ContextLoader
or as "contextClass"
init-param for FrameworkServlet
,
replacing the default XmlWebApplicationContext
. It will then automatically
receive the "contextConfigLocation" context-param or init-param, respectively.
Note that WebApplicationContext implementations are generally supposed
to configure themselves based on the configuration received through the
ConfigurableWebApplicationContext
interface. In contrast, a standalone
application context might allow for configuration in custom startup code
(for example, GenericApplicationContext
).
DefaultResourceLoader.ClassPathContextResource
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME
APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAME
CONTEXT_ATTRIBUTES_BEAN_NAME, CONTEXT_PARAMETERS_BEAN_NAME, ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, SCOPE_APPLICATION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAME
CONFIG_LOCATION_DELIMITERS, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, LOAD_TIME_WEAVER_BEAN_NAME, SYSTEM_ENVIRONMENT_BEAN_NAME, SYSTEM_PROPERTIES_BEAN_NAME
FACTORY_BEAN_PREFIX
CLASSPATH_ALL_URL_PREFIX
CLASSPATH_URL_PREFIX
Constructor and Description |
---|
AbstractRefreshableWebApplicationContext() |
Modifier and Type | Method and Description |
---|---|
protected ConfigurableEnvironment |
createEnvironment()
Create and return a new
StandardServletEnvironment . |
String |
getApplicationName()
Return a name for the deployed application that this context belongs to.
|
String[] |
getConfigLocations()
Return an array of resource locations, referring to the XML bean definition
files that this context should be built with.
|
String |
getNamespace()
Return the namespace for this web application context, if any.
|
protected Resource |
getResourceByPath(String path)
This implementation supports file paths beneath the root of the ServletContext.
|
protected ResourcePatternResolver |
getResourcePatternResolver()
This implementation supports pattern matching in unexpanded WARs too.
|
ServletConfig |
getServletConfig()
Return the ServletConfig for this web application context, if any.
|
ServletContext |
getServletContext()
Return the standard Servlet API ServletContext for this application.
|
Theme |
getTheme(String themeName)
Return the Theme instance for the given theme name.
|
protected void |
initPropertySources()
Replace any stub property sources with actual instances.
|
protected void |
onRefresh()
Initialize the theme capability.
|
protected void |
postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
Register request/session scopes, a
ServletContextAwareProcessor , etc. |
void |
setNamespace(String namespace)
Set the namespace for this web application context,
to be used for building a default context config location.
|
void |
setServletConfig(ServletConfig servletConfig)
Set the ServletConfig for this web application context.
|
void |
setServletContext(ServletContext servletContext)
Set the ServletContext for this web application context.
|
afterPropertiesSet, getDefaultConfigLocations, resolvePath, setBeanName, setConfigLocation, setConfigLocations, setId
assertBeanFactoryActive, cancelRefresh, closeBeanFactory, createBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, loadBeanDefinitions, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferences
addApplicationListener, addBeanFactoryPostProcessor, close, containsBean, containsBeanDefinition, containsLocalBean, destroy, destroyBeans, doClose, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getAutowireCapableBeanFactory, getBean, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResources, getStartupDate, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, isTypeMatch, obtainFreshBeanFactory, onClose, prepareBeanFactory, prepareRefresh, publishEvent, publishEvent, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, resetCommonCaches, setDisplayName, setEnvironment, setParent, start, stop, toString
addProtocolResolver, clearResourceCaches, getClassLoader, getProtocolResolvers, getResource, getResourceCache, setClassLoader
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
setConfigLocation, setConfigLocations
addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, close, getBeanFactory, getEnvironment, isActive, refresh, registerShutdownHook, setEnvironment, setId, setParent
getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDate
containsBeanDefinition, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation
containsLocalBean, getParentBeanFactory
containsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatch
getMessage, getMessage, getMessage
publishEvent, publishEvent
getResources
getClassLoader, getResource
public AbstractRefreshableWebApplicationContext()
public void setServletContext(@Nullable ServletContext servletContext)
ConfigurableWebApplicationContext
Does not cause an initialization of the context: refresh needs to be called after the setting of all configuration properties.
setServletContext
in interface ConfigurableWebApplicationContext
ConfigurableApplicationContext.refresh()
@Nullable public ServletContext getServletContext()
WebApplicationContext
getServletContext
in interface WebApplicationContext
public void setServletConfig(@Nullable ServletConfig servletConfig)
ConfigurableWebApplicationContext
setServletConfig
in interface ConfigurableWebApplicationContext
ConfigurableApplicationContext.refresh()
@Nullable public ServletConfig getServletConfig()
ConfigurableWebApplicationContext
getServletConfig
in interface ConfigurableWebApplicationContext
public void setNamespace(@Nullable String namespace)
ConfigurableWebApplicationContext
setNamespace
in interface ConfigurableWebApplicationContext
@Nullable public String getNamespace()
ConfigurableWebApplicationContext
getNamespace
in interface ConfigurableWebApplicationContext
public String[] getConfigLocations()
AbstractRefreshableConfigApplicationContext
The default implementation returns null
. Subclasses can override
this to provide a set of resource locations to load bean definitions from.
getConfigLocations
in interface ConfigurableWebApplicationContext
getConfigLocations
in class AbstractRefreshableConfigApplicationContext
null
if noneAbstractApplicationContext.getResources(java.lang.String)
,
AbstractApplicationContext.getResourcePatternResolver()
public String getApplicationName()
ApplicationContext
getApplicationName
in interface ApplicationContext
getApplicationName
in class AbstractApplicationContext
protected ConfigurableEnvironment createEnvironment()
StandardServletEnvironment
. Subclasses may override
in order to configure the environment or specialize the environment type returned.createEnvironment
in class AbstractApplicationContext
protected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
ServletContextAwareProcessor
, etc.postProcessBeanFactory
in class AbstractApplicationContext
beanFactory
- the bean factory used by the application contextprotected Resource getResourceByPath(String path)
getResourceByPath
in class DefaultResourceLoader
path
- the path to the resourceServletContextResource
protected ResourcePatternResolver getResourcePatternResolver()
getResourcePatternResolver
in class AbstractApplicationContext
ServletContextResourcePatternResolver
protected void onRefresh()
onRefresh
in class AbstractApplicationContext
AbstractApplicationContext.refresh()
protected void initPropertySources()
Replace any stub property sources with actual instances.
Replace Servlet
-related property sources.
@Nullable public Theme getTheme(String themeName)
ThemeSource
The returned Theme will resolve theme-specific messages, codes, file paths, etc (e.g. CSS and image files in a web environment).
getTheme
in interface ThemeSource
themeName
- the name of the themenull
if none defined.
Note that, by convention, a ThemeSource should at least be able to
return a default Theme for the default theme name "theme" but may also
return default Themes for other theme names.AbstractThemeResolver.ORIGINAL_DEFAULT_THEME_NAME