org.springframework.web.context.support

## Class StaticWebApplicationContext

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

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

    public class StaticWebApplicationContext
    extends StaticApplicationContext
    implements ConfigurableWebApplicationContext, ThemeSource

Static `WebApplicationContext` implementation for testing. Not intended for use in production applications.

Implements the `ConfigurableWebApplicationContext` interface to allow for direct replacement of an `XmlWebApplicationContext`, despite not actually supporting external configuration files.

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".

Author:
  Rod Johnson, Juergen Hoeller
See Also:
  `ThemeSource`

### 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
`StaticWebApplicationContext()`

### Method Summary

Methods
`protected ConfigurableEnvironment` `createEnvironment()` Create and return a new `StandardServletEnvironment`.
`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 request/session scopes, a `ServletContextAwareProcessor`, etc.
`void` `setConfigLocation(String configLocation)` The `StaticWebApplicationContext` class does not support this method.
`void` `setConfigLocations(String[] configLocations)` The `StaticWebApplicationContext` class does not support this method.
`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.StaticApplicationContext

`addMessage, getStaticMessageSource, registerPrototype, registerPrototype, registerSingleton, registerSingleton`

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

`getApplicationName, 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

#### StaticWebApplicationContext

    public StaticWebApplicationContext()

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

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

The `StaticWebApplicationContext` class does not support this method.

Specified by:
  `setConfigLocation` in interface `ConfigurableWebApplicationContext`
Throws:
  `UnsupportedOperationException` - always

#### setConfigLocations

    public void setConfigLocations(String[] configLocations)

The `StaticWebApplicationContext` class does not support this method.

Specified by:
  `setConfigLocations` in interface `ConfigurableWebApplicationContext`
Throws:
  `UnsupportedOperationException` - always

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

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

#### createEnvironment

    protected ConfigurableEnvironment createEnvironment()

Create and return a new `StandardServletEnvironment`.

Overrides:
  `createEnvironment` in class `AbstractApplicationContext`

#### onRefresh

    protected void onRefresh()

Initialize the theme capability.

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

#### initPropertySources

    protected void initPropertySources()

Description copied from class: `AbstractApplicationContext`

Replace any stub property sources with actual instances.

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`