org.springframework.web.context.support

## Class GenericWebApplicationContext

- java.lang.Object
- - org.springframework.core.io.DefaultResourceLoader
  - - org.springframework.context.support.AbstractApplicationContext
    - - org.springframework.context.support.GenericApplicationContext
      - - org.springframework.web.context.support.GenericWebApplicationContext

All Implemented Interfaces:
  Closeable, AutoCloseable, BeanFactory, DisposableBean, HierarchicalBeanFactory, ListableBeanFactory, BeanDefinitionRegistry, ApplicationContext, ApplicationEventPublisher, ConfigurableApplicationContext, Lifecycle, MessageSource, AliasRegistry, EnvironmentCapable, ResourceLoader, ResourcePatternResolver, ThemeSource, ConfigurableWebApplicationContext, WebApplicationContext

    public class GenericWebApplicationContext
    extends GenericApplicationContext
    implements ConfigurableWebApplicationContext, ThemeSource

Subclass of `GenericApplicationContext`, suitable for web environments.

Implements the `ConfigurableWebApplicationContext`, but is not intended for declarative setup in `web.xml`. Instead, it is designed for programmatic setup, for example for building nested contexts or for use within Spring 3.1 `WebApplicationInitializer`s.

If you intend to implement a WebApplicationContext that reads bean definitions from configuration files, consider deriving from AbstractRefreshableWebApplicationContext, reading the bean definitions in an implementation of the `loadBeanDefinitions` 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 AbstractApplicationContext.

In addition to the special beans detected by `AbstractApplicationContext`, this class detects a ThemeSource bean in the context, with the name "themeSource".

Since:
  1.2
Author:
  Juergen Hoeller, Chris Beams

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

Constructors
Constructor and Description
`GenericWebApplicationContext()` Create a new GenericWebApplicationContext.
`GenericWebApplicationContext(DefaultListableBeanFactory beanFactory)` Create a new GenericWebApplicationContext with the given DefaultListableBeanFactory.
`GenericWebApplicationContext(DefaultListableBeanFactory beanFactory, ServletContext servletContext)` Create a new GenericWebApplicationContext with the given DefaultListableBeanFactory.
`GenericWebApplicationContext(ServletContext servletContext)` Create a new GenericWebApplicationContext for the given ServletContext.

### Method Summary

Methods
`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 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 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 ServletContextAwareProcessor.
`void` `setConfigLocation(String configLocation)` Set the config locations for this web application context in init-param style, i.e.
`void` `setConfigLocations(String[] configLocations)` Set the config locations for this web application context.
`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 that this WebApplicationContext runs in.

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

`cancelRefresh, closeBeanFactory, getBeanDefinition, getBeanFactory, getDefaultListableBeanFactory, getResource, getResources, isAlias, isBeanNameInUse, refreshBeanFactory, registerAlias, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setId, setParent, setResourceLoader`

### 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, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getStartupDate, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, obtainFreshBeanFactory, onClose, prepareBeanFactory, prepareRefresh, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, setDisplayName, setEnvironment, start, stop, toString`

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

`getClassLoader, 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.ConfigurableApplicationContext

`addApplicationListener, addBeanFactoryPostProcessor, close, getBeanFactory, getEnvironment, 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`

### Methods inherited from interface org.springframework.beans.factory.support.BeanDefinitionRegistry

`containsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNames`

### Methods inherited from interface org.springframework.core.AliasRegistry

`getAliases`

### Constructor Detail

#### GenericWebApplicationContext

    public GenericWebApplicationContext()

Create a new GenericWebApplicationContext.

See Also:
  `setServletContext(javax.servlet.ServletContext)`, `GenericApplicationContext.registerBeanDefinition(java.lang.String, org.springframework.beans.factory.config.BeanDefinition)`, `AbstractApplicationContext.refresh()`

#### GenericWebApplicationContext

    public GenericWebApplicationContext(ServletContext servletContext)

Create a new GenericWebApplicationContext for the given ServletContext.

Parameters:
  `servletContext` - the ServletContext to run in
See Also:
  `GenericApplicationContext.registerBeanDefinition(java.lang.String, org.springframework.beans.factory.config.BeanDefinition)`, `AbstractApplicationContext.refresh()`

#### GenericWebApplicationContext

    public GenericWebApplicationContext(DefaultListableBeanFactory beanFactory)

Create a new GenericWebApplicationContext with the given DefaultListableBeanFactory.

Parameters:
  `beanFactory` - the DefaultListableBeanFactory instance to use for this context
See Also:
  `setServletContext(javax.servlet.ServletContext)`, `GenericApplicationContext.registerBeanDefinition(java.lang.String, org.springframework.beans.factory.config.BeanDefinition)`, `AbstractApplicationContext.refresh()`

#### GenericWebApplicationContext

    public GenericWebApplicationContext(DefaultListableBeanFactory beanFactory,
                                ServletContext servletContext)

Create a new GenericWebApplicationContext with the given DefaultListableBeanFactory.

Parameters:
  `beanFactory` - the DefaultListableBeanFactory instance to use for this context
  `servletContext` - the ServletContext to run in
See Also:
  `GenericApplicationContext.registerBeanDefinition(java.lang.String, org.springframework.beans.factory.config.BeanDefinition)`, `AbstractApplicationContext.refresh()`

### Method Detail

#### setServletContext

    public void setServletContext(ServletContext servletContext)

Set the ServletContext that this WebApplicationContext runs in.

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`

#### getApplicationName

    public String getApplicationName()

Description copied from interface: `ApplicationContext`
Return a name for the deployed application that this context belongs to.

Specified by:
  `getApplicationName` in interface `ApplicationContext`
Overrides:
  `getApplicationName` in class `AbstractApplicationContext`
Returns:
  a name for the deployed application, or the empty String by default

#### createEnvironment

    protected ConfigurableEnvironment createEnvironment()

Create and return a new `StandardServletEnvironment`.

Overrides:
  `createEnvironment` in class `AbstractApplicationContext`

#### postProcessBeanFactory

    protected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)

Register ServletContextAwareProcessor.

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

#### 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`

#### 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`

#### setConfigLocation

    public void setConfigLocation(String configLocation)

Description copied from interface: `ConfigurableWebApplicationContext`
Set the config locations for this web application context in init-param style, i.e. with distinct locations separated by commas, semicolons or whitespace.

If not set, the implementation is supposed to use a default for the given namespace or the root web application context, as appropriate.

Specified by:
  `setConfigLocation` in interface `ConfigurableWebApplicationContext`

#### setConfigLocations

    public void setConfigLocations(String[] configLocations)

Description copied from interface: `ConfigurableWebApplicationContext`
Set the config locations for this web application context.

If not set, the implementation is supposed to use a default for the given namespace or the root web application context, as appropriate.

Specified by:
  `setConfigLocations` in interface `ConfigurableWebApplicationContext`

#### getConfigLocations

    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`