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
    Modifier and Type | Method and Description
    --- | ---
    `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.
    `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` | `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, 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, 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`

    - #### getEnvironment

          public ConfigurableWebEnvironment getEnvironment()

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

      If `null`, a new environment will be initialized via `AbstractApplicationContext.createEnvironment()`.

      Specified by:
        `getEnvironment` in interface `ConfigurableApplicationContext`
      Specified by:
        `getEnvironment` in interface `EnvironmentCapable`
      Specified by:
        `getEnvironment` in interface `ConfigurableWebApplicationContext`
      Overrides:
        `getEnvironment` 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`