## 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:
  Aware, BeanFactory, BeanNameAware, DisposableBean, HierarchicalBeanFactory, InitializingBean, ListableBeanFactory, ApplicationContext, ApplicationEventPublisher, ConfigurableApplicationContext, Lifecycle, MessageSource, EnvironmentCapable, ResourceLoader, ResourcePatternResolver, ThemeSource, ConfigurableWebApplicationContext, WebApplicationContext

Direct Known Subclasses:
  AnnotationConfigWebApplicationContext, XmlWebApplicationContext

    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`).

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

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.web.context.ConfigurableWebApplicationContext
`APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAME`

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_GLOBAL_SESSION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAME`

Fields inherited from interface org.springframework.context.ConfigurableApplicationContext
`CONFIG_LOCATION_DELIMITERS, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, LOAD_TIME_WEAVER_BEAN_NAME, SYSTEM_ENVIRONMENT_BEAN_NAME, SYSTEM_PROPERTIES_BEAN_NAME`

Fields inherited from interface org.springframework.beans.factory.BeanFactory
`FACTORY_BEAN_PREFIX`

Fields inherited from interface org.springframework.core.io.support.ResourcePatternResolver
`CLASSPATH_ALL_URL_PREFIX`

Fields inherited from interface org.springframework.core.io.ResourceLoader
`CLASSPATH_URL_PREFIX`

Constructor Summary
`AbstractRefreshableWebApplicationContext()`

Method Summary
`protected ConfigurableEnvironment` `createEnvironment()` Create and return a new `StandardServletEnvironment`.
`String[]` `getConfigLocations()` Return an array of resource locations, referring to the XML bean definition files that this context should be built with.
`ConfigurableWebEnvironment` `getEnvironment()` Return the Environment for this application context in configurable form.
`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.

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
`cancelRefresh, closeBeanFactory, createBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, loadBeanDefinitions, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferences`

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

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

Methods inherited from class org.springframework.core.io.DefaultResourceLoader
`getClassLoader, getResource, setClassLoader`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.springframework.web.context.ConfigurableWebApplicationContext
`setConfigLocation, setConfigLocations`

Methods inherited from interface org.springframework.context.ConfigurableApplicationContext
`addApplicationListener, addBeanFactoryPostProcessor, close, getBeanFactory, isActive, refresh, registerShutdownHook, setEnvironment, setId, setParent`

Methods inherited from interface org.springframework.context.ApplicationContext
`getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDate`

Methods inherited from interface org.springframework.beans.factory.ListableBeanFactory
`containsBeanDefinition, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation`

Methods inherited from interface org.springframework.beans.factory.HierarchicalBeanFactory
`containsLocalBean, getParentBeanFactory`

Methods inherited from interface org.springframework.beans.factory.BeanFactory
`containsBean, getAliases, getBean, getBean, getBean, getBean, getType, isPrototype, isSingleton, isTypeMatch`

Methods inherited from interface org.springframework.context.MessageSource
`getMessage, getMessage, getMessage`

Methods inherited from interface org.springframework.context.ApplicationEventPublisher
`publishEvent`

Methods inherited from interface org.springframework.core.io.support.ResourcePatternResolver
`getResources`

Methods inherited from interface org.springframework.core.io.ResourceLoader
`getClassLoader, getResource`

Methods inherited from interface org.springframework.context.Lifecycle
`isRunning, start, stop`

Constructor Detail

### AbstractRefreshableWebApplicationContext

    public AbstractRefreshableWebApplicationContext()

Method Detail

### setServletContext

    public void setServletContext(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

    public ServletContext getServletContext()

  Description copied from interface: `WebApplicationContext`
  Return the standard Servlet API ServletContext for this application.

  Also available for a Portlet application, in addition to the PortletContext.

  Specified by:
    `getServletContext` in interface `WebApplicationContext`

### setServletConfig

    public void setServletConfig(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

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

    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

    public String[] getConfigLocations()

  Description copied from class: `AbstractRefreshableConfigApplicationContext`
  Return an array of resource locations, referring to the XML bean definition files that this context should be built with. Can also include location patterns, which will get resolved via a ResourcePatternResolver.

  The default implementation returns `null`. Subclasses can override this to provide a set of resource locations to load bean definitions from.

  Specified by:
    `getConfigLocations` in interface `ConfigurableWebApplicationContext`
  Overrides:
    `getConfigLocations` in class `AbstractRefreshableConfigApplicationContext`
  Returns:
    an array of resource locations, or `null` if none
  See Also:
    `AbstractApplicationContext.getResources(java.lang.String)`, `AbstractApplicationContext.getResourcePatternResolver()`

### createEnvironment

    protected ConfigurableEnvironment createEnvironment()

  Create and return a new `StandardServletEnvironment`.

  Overrides:
    `createEnvironment` in class `AbstractApplicationContext`

### getEnvironment

    public ConfigurableWebEnvironment getEnvironment()

  Description copied from interface: `ConfigurableApplicationContext`
  Return the Environment for this application context in configurable form.

  Specified by:
    `getEnvironment` in interface `ConfigurableApplicationContext`
  Specified by:
    `getEnvironment` in interface `EnvironmentCapable`
  Specified by:
    `getEnvironment` in interface `ConfigurableWebApplicationContext`
  Overrides:
    `getEnvironment` in class `AbstractApplicationContext`

### postProcessBeanFactory

    protected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)

  Register request/session scopes, a `ServletContextAwareProcessor`, etc.

  Overrides:
    `postProcessBeanFactory` in class `AbstractApplicationContext`
  Parameters:
    `beanFactory` - the bean factory used by the application context

### getResourceByPath

    protected Resource getResourceByPath(String path)

  This implementation supports file paths beneath the root of the ServletContext.

  Overrides:
    `getResourceByPath` in class `DefaultResourceLoader`
  Parameters:
    `path` - the path to the resource
  Returns:
    the corresponding Resource handle
  See Also:
    `ServletContextResource`

### getResourcePatternResolver

    protected ResourcePatternResolver getResourcePatternResolver()

  This implementation supports pattern matching in unexpanded WARs too.

  Overrides:
    `getResourcePatternResolver` in class `AbstractApplicationContext`
  Returns:
    the ResourcePatternResolver for this context
  See Also:
    `ServletContextResourcePatternResolver`

### onRefresh

    protected void onRefresh()

  Initialize the theme capability.

  Overrides:
    `onRefresh` in class `AbstractApplicationContext`
  See Also:
    `AbstractApplicationContext.refresh()`

### initPropertySources

    protected void initPropertySources()

  Replace any stub property sources with actual instances.

  Replace `Servlet`-related property sources.

  Overrides:
    `initPropertySources` in class `AbstractApplicationContext`
  See Also:
    `PropertySource.StubPropertySource`, `WebApplicationContextUtils.initServletPropertySources(org.springframework.core.env.MutablePropertySources, javax.servlet.ServletContext)`

### getTheme

    public Theme getTheme(String themeName)

  Description copied from interface: `ThemeSource`
  Return the Theme instance for the given theme name.

  The returned Theme will resolve theme-specific messages, codes, file paths, etc (e.g. CSS and image files in a web environment).

  Specified by:
    `getTheme` in interface `ThemeSource`
  Parameters:
    `themeName` - the name of the theme
  Returns:
    the corresponding Theme, or `null` 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.
  See Also:
    `AbstractThemeResolver.ORIGINAL_DEFAULT_THEME_NAME`