Package org.springframework.web.context.support

# Class AbstractRefreshableWebApplicationContext

java.lang.Object
org.springframework.core.io.DefaultResourceLoader
org.springframework.context.support.AbstractApplicationContext
org.springframework.context.support.AbstractRefreshableApplicationContext
org.springframework.context.support.AbstractRefreshableConfigApplicationContext
org.springframework.web.context.support.AbstractRefreshableWebApplicationContext

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `org.springframework.beans.factory.Aware`, `org.springframework.beans.factory.BeanFactory`, `org.springframework.beans.factory.BeanNameAware`, `org.springframework.beans.factory.HierarchicalBeanFactory`, `org.springframework.beans.factory.InitializingBean`, `org.springframework.beans.factory.ListableBeanFactory`, `org.springframework.context.ApplicationContext`, `org.springframework.context.ApplicationEventPublisher`, `org.springframework.context.ConfigurableApplicationContext`, `org.springframework.context.Lifecycle`, `org.springframework.context.MessageSource`, `org.springframework.core.env.EnvironmentCapable`, `org.springframework.core.io.ResourceLoader`, `org.springframework.core.io.support.ResourcePatternResolver`, `org.springframework.ui.context.ThemeSource`, `ConfigurableWebApplicationContext`, `WebApplicationContext`

Direct Known Subclasses:
  `AnnotationConfigWebApplicationContext`, `GroovyWebApplicationContext`, `XmlWebApplicationContext`

public abstract class AbstractRefreshableWebApplicationContext extends org.springframework.context.support.AbstractRefreshableConfigApplicationContext implements ConfigurableWebApplicationContext, org.springframework.ui.context.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 implement 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, for example, 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". Theme support is deprecated as of 6.0 with no direct replacement.

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 `org.springframework.web.servlet.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`).

Since:
  1.1.3
Author:
  Juergen Hoeller
See Also:
  - `AbstractRefreshableApplicationContext.loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)`
  - `ConfigurableWebApplicationContext.setConfigLocations(java.lang.String...)`
  - `XmlWebApplicationContext`

## Nested Class Summary

## Nested classes/interfaces inherited from class org.springframework.core.io.DefaultResourceLoader

`org.springframework.core.io.DefaultResourceLoader.ClassPathContextResource`

## Field Summary

### Fields inherited from class org.springframework.context.support.AbstractApplicationContext

`APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME`

### Fields inherited from interface org.springframework.beans.factory.BeanFactory

`FACTORY_BEAN_PREFIX, FACTORY_BEAN_PREFIX_CHAR`

### Fields inherited from interface org.springframework.context.ConfigurableApplicationContext

`APPLICATION_STARTUP_BEAN_NAME, BOOTSTRAP_EXECUTOR_BEAN_NAME, CONFIG_LOCATION_DELIMITERS, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, LOAD_TIME_WEAVER_BEAN_NAME, SHUTDOWN_HOOK_THREAD_NAME, SYSTEM_ENVIRONMENT_BEAN_NAME, SYSTEM_PROPERTIES_BEAN_NAME`

### Fields inherited from interface org.springframework.web.context.ConfigurableWebApplicationContext

`APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAME`

### Fields inherited from interface org.springframework.core.io.ResourceLoader

`CLASSPATH_URL_PREFIX`

### Fields inherited from interface org.springframework.core.io.support.ResourcePatternResolver

`CLASSPATH_ALL_URL_PREFIX`

### Fields inherited from interface org.springframework.web.context.WebApplicationContext

`CONTEXT_ATTRIBUTES_BEAN_NAME, CONTEXT_PARAMETERS_BEAN_NAME, ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, SCOPE_APPLICATION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAME`

## Constructor Summary

Constructors
Constructor
Description
`AbstractRefreshableWebApplicationContext()`

## Method Summary

Modifier and Type
Method
Description
`protected org.springframework.core.env.ConfigurableEnvironment`
`createEnvironment()`
Create and return a new `StandardServletEnvironment`.
`String`
`getApplicationName()`
`String[]`
`getConfigLocations()`
Return the config locations for this web application context, or `null` if none specified.
`String`
`getNamespace()`
Return the namespace for this web application context, if any.
`protected org.springframework.core.io.Resource`
`getResourceByPath(String path)`
This implementation supports file paths beneath the root of the ServletContext.
`protected org.springframework.core.io.support.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.
`org.springframework.ui.context.Theme`
`getTheme(String themeName)`
Deprecated.
`protected void`
`initPropertySources()`
`protected void`
`onRefresh()`
Initialize the theme capability.
`protected void`
`postProcessBeanFactory(org.springframework.beans.factory.config.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.

### Methods inherited from class org.springframework.context.support.AbstractRefreshableConfigApplicationContext

`afterPropertiesSet, getDefaultConfigLocations, resolvePath, setBeanName, setConfigLocation, setConfigLocations, setId`

### Methods inherited from class org.springframework.context.support.AbstractRefreshableApplicationContext

`assertBeanFactoryActive, cancelRefresh, closeBeanFactory, createBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, loadBeanDefinitions, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferences`

### Methods inherited from class org.springframework.context.support.AbstractApplicationContext

`addApplicationListener, addBeanFactoryPostProcessor, clearResourceCaches, close, containsBean, containsBeanDefinition, containsLocalBean, destroyBeans, doClose, findAllAnnotationsOnBean, findAnnotationOnBean, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getApplicationStartup, getAutowireCapableBeanFactory, getBean, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResources, getStartupDate, getType, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, invokeBeanFactoryPostProcessors, isActive, isClosed, isPrototype, isRunning, isSingleton, isTypeMatch, isTypeMatch, obtainFreshBeanFactory, onClose, prepareBeanFactory, prepareRefresh, publishEvent, publishEvent, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, removeApplicationListener, resetCommonCaches, setApplicationStartup, setDisplayName, setEnvironment, setParent, start, stop, toString`

### Methods inherited from class org.springframework.core.io.DefaultResourceLoader

`addProtocolResolver, getClassLoader, getProtocolResolvers, getResource, getResourceCache, setClassLoader`

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

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

### Methods inherited from interface org.springframework.context.ApplicationContext

`getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDate`

### Methods inherited from interface org.springframework.context.ApplicationEventPublisher

`publishEvent, publishEvent`

### Methods inherited from interface org.springframework.beans.factory.BeanFactory

`containsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getBeanProvider, getBeanProvider, getType, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatch`

### Methods inherited from interface org.springframework.context.ConfigurableApplicationContext

`addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, close, getApplicationStartup, getBeanFactory, getEnvironment, isActive, isClosed, refresh, registerShutdownHook, removeApplicationListener, setApplicationStartup, setClassLoader, setEnvironment, setId, setParent`

### Methods inherited from interface org.springframework.web.context.ConfigurableWebApplicationContext

`setConfigLocation, setConfigLocations`

### Methods inherited from interface org.springframework.beans.factory.HierarchicalBeanFactory

`containsLocalBean, getParentBeanFactory`

### Methods inherited from interface org.springframework.context.Lifecycle

`isRunning, start, stop`

### Methods inherited from interface org.springframework.beans.factory.ListableBeanFactory

`containsBeanDefinition, findAllAnnotationsOnBean, findAnnotationOnBean, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotation`

### Methods inherited from interface org.springframework.context.MessageSource

`getMessage, getMessage, getMessage`

### Methods inherited from interface org.springframework.core.io.ResourceLoader

`getClassLoader, getResource`

### Methods inherited from interface org.springframework.core.io.support.ResourcePatternResolver

`getResources`

## Constructor Details

### AbstractRefreshableWebApplicationContext

public AbstractRefreshableWebApplicationContext()

## Method Details

### setServletContext

public void setServletContext(@Nullable ServletContext servletContext)
Description copied from interface: `ConfigurableWebApplicationContext`
Set the ServletContext for this web application context.

Does not cause an initialization of the context: refresh needs to be called after the setting of all configuration properties.

Specified by:
  `setServletContext` in interface `ConfigurableWebApplicationContext`
See Also:
  - `ConfigurableApplicationContext.refresh()`

### getServletContext

@Nullable public ServletContext getServletContext()
Description copied from interface: `WebApplicationContext`
Return the standard Servlet API ServletContext for this application.

Specified by:
  `getServletContext` in interface `WebApplicationContext`

### setServletConfig

public void setServletConfig(@Nullable ServletConfig servletConfig)
Description copied from interface: `ConfigurableWebApplicationContext`
Set the ServletConfig for this web application context. Only called for a WebApplicationContext that belongs to a specific Servlet.

Specified by:
  `setServletConfig` in interface `ConfigurableWebApplicationContext`
See Also:
  - `ConfigurableApplicationContext.refresh()`

### getServletConfig

@Nullable public ServletConfig getServletConfig()
Description copied from interface: `ConfigurableWebApplicationContext`
Return the ServletConfig for this web application context, if any.

Specified by:
  `getServletConfig` in interface `ConfigurableWebApplicationContext`

### setNamespace

public void setNamespace(@Nullable String namespace)
Description copied from interface: `ConfigurableWebApplicationContext`
Set the namespace for this web application context, to be used for building a default context config location. The root web application context does not have a namespace.

Specified by:
  `setNamespace` in interface `ConfigurableWebApplicationContext`

### getNamespace

@Nullable public String getNamespace()
Description copied from interface: `ConfigurableWebApplicationContext`
Return the namespace for this web application context, if any.

Specified by:
  `getNamespace` in interface `ConfigurableWebApplicationContext`

### getConfigLocations

@Nullable public String[] getConfigLocations()
Description copied from interface: `ConfigurableWebApplicationContext`
Return the config locations for this web application context, or `null` if none specified.

Specified by:
  `getConfigLocations` in interface `ConfigurableWebApplicationContext`
Overrides:
  `getConfigLocations` in class `org.springframework.context.support.AbstractRefreshableConfigApplicationContext`

### getApplicationName

public String getApplicationName()

Specified by:
  `getApplicationName` in interface `org.springframework.context.ApplicationContext`
Overrides:
  `getApplicationName` in class `org.springframework.context.support.AbstractApplicationContext`

### createEnvironment

protected org.springframework.core.env.ConfigurableEnvironment createEnvironment()
Create and return a new `StandardServletEnvironment`. Subclasses may override in order to configure the environment or specialize the environment type returned.

Overrides:
  `createEnvironment` in class `org.springframework.context.support.AbstractApplicationContext`

### postProcessBeanFactory

protected void postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
Register request/session scopes, a `ServletContextAwareProcessor`, etc.

Overrides:
  `postProcessBeanFactory` in class `org.springframework.context.support.AbstractApplicationContext`

### getResourceByPath

protected org.springframework.core.io.Resource getResourceByPath(String path)
This implementation supports file paths beneath the root of the ServletContext.

Overrides:
  `getResourceByPath` in class `org.springframework.core.io.DefaultResourceLoader`
See Also:
  - `ServletContextResource`

### getResourcePatternResolver

protected org.springframework.core.io.support.ResourcePatternResolver getResourcePatternResolver()
This implementation supports pattern matching in unexpanded WARs too.

Overrides:
  `getResourcePatternResolver` in class `org.springframework.context.support.AbstractApplicationContext`
See Also:
  - `ServletContextResourcePatternResolver`

### onRefresh

protected void onRefresh()
Initialize the theme capability.

Overrides:
  `onRefresh` in class `org.springframework.context.support.AbstractApplicationContext`

### initPropertySources

protected void initPropertySources()

Replace `Servlet`-related property sources.

Overrides:
  `initPropertySources` in class `org.springframework.context.support.AbstractApplicationContext`

### getTheme

@Nullable @Deprecated public org.springframework.ui.context.Theme getTheme(String themeName)
Deprecated.

Specified by:
  `getTheme` in interface `org.springframework.ui.context.ThemeSource`