Package org.springframework.web.context.support

# Class XmlWebApplicationContext

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
org.springframework.web.context.support.XmlWebApplicationContext

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`

public class XmlWebApplicationContext extends AbstractRefreshableWebApplicationContext
`WebApplicationContext` implementation which takes its configuration from XML documents, understood by an `XmlBeanDefinitionReader`. This is essentially the equivalent of `GenericXmlApplicationContext` for a web environment.

By default, the configuration will be taken from "/WEB-INF/applicationContext.xml" for the root context, and "/WEB-INF/test-servlet.xml" for a context with the namespace "test-servlet" (like for a DispatcherServlet instance with the servlet-name "test").

The config location defaults can be overridden via the "contextConfigLocation" context-param of `ContextLoader` and servlet init-param of `org.springframework.web.servlet.FrameworkServlet`. Config locations can either denote concrete files like "/WEB-INF/context.xml" or Ant-style patterns like "/WEB-INF/*-context.xml" (see `PathMatcher` javadoc for pattern details).

Note: In case of multiple config locations, later bean definitions will override ones defined in earlier loaded files. This can be leveraged to deliberately override certain bean definitions via an extra XML file.

For a WebApplicationContext that reads in a different bean definition format, create an analogous subclass of `AbstractRefreshableWebApplicationContext`. Such a context implementation can be specified as "contextClass" context-param for ContextLoader or "contextClass" init-param for FrameworkServlet.

Author:
  Rod Johnson, Juergen Hoeller
See Also:
  - `AbstractRefreshableWebApplicationContext.setNamespace(java.lang.String)`
  - `AbstractRefreshableConfigApplicationContext.setConfigLocations(java.lang.String...)`
  - `XmlBeanDefinitionReader`
  - `ContextLoader.initWebApplicationContext(jakarta.servlet.ServletContext)`
  - `org.springframework.web.servlet.FrameworkServlet#initWebApplicationContext`

## Nested Class Summary

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

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

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`DEFAULT_CONFIG_LOCATION`
Default config location for the root context.
`static final String`
`DEFAULT_CONFIG_LOCATION_PREFIX`
Default prefix for building a config location for a namespace.
`static final String`
`DEFAULT_CONFIG_LOCATION_SUFFIX`
Default suffix for building a config location for a namespace.

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

## Method Summary

Modifier and Type
Method
Description
`protected String[]`
`getDefaultConfigLocations()`
The default location for the root context is "/WEB-INF/applicationContext.xml", and "/WEB-INF/test-servlet.xml" for a context with the namespace "test-servlet" (like for a DispatcherServlet instance with the servlet-name "test").
`protected void`
`initBeanDefinitionReader(org.springframework.beans.factory.xml.XmlBeanDefinitionReader beanDefinitionReader)`
Initialize the bean definition reader used for loading the bean definitions of this context.
`protected void`
`loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory beanFactory)`
Loads the bean definitions via an XmlBeanDefinitionReader.
`protected void`
`loadBeanDefinitions(org.springframework.beans.factory.xml.XmlBeanDefinitionReader reader)`
Load the bean definitions with the given XmlBeanDefinitionReader.

### Methods inherited from class org.springframework.web.context.support.AbstractRefreshableWebApplicationContext

`createEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourceByPath, getResourcePatternResolver, getServletConfig, getServletContext, getTheme, initPropertySources, onRefresh, postProcessBeanFactory, setNamespace, setServletConfig, setServletContext`

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

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

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

`assertBeanFactoryActive, cancelRefresh, closeBeanFactory, createBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, 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`

## Field Details

### DEFAULT_CONFIG_LOCATION

public static final String DEFAULT_CONFIG_LOCATION
Default config location for the root context.

See Also:
  - Constant Field Values

### DEFAULT_CONFIG_LOCATION_PREFIX

public static final String DEFAULT_CONFIG_LOCATION_PREFIX
Default prefix for building a config location for a namespace.

See Also:
  - Constant Field Values

### DEFAULT_CONFIG_LOCATION_SUFFIX

public static final String DEFAULT_CONFIG_LOCATION_SUFFIX
Default suffix for building a config location for a namespace.

See Also:
  - Constant Field Values

## Constructor Details

### XmlWebApplicationContext

public XmlWebApplicationContext()

## Method Details

### loadBeanDefinitions

protected void loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory beanFactory) throws org.springframework.beans.BeansException, IOException
Loads the bean definitions via an XmlBeanDefinitionReader.

Specified by:
  `loadBeanDefinitions` in class `org.springframework.context.support.AbstractRefreshableApplicationContext`
Throws:
  `org.springframework.beans.BeansException`
  `IOException`
See Also:
  - `XmlBeanDefinitionReader`
  - `initBeanDefinitionReader(org.springframework.beans.factory.xml.XmlBeanDefinitionReader)`
  - `loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)`

### initBeanDefinitionReader

protected void initBeanDefinitionReader(org.springframework.beans.factory.xml.XmlBeanDefinitionReader beanDefinitionReader)
Initialize the bean definition reader used for loading the bean definitions of this context. Default implementation is empty.

Can be overridden in subclasses, for example, for turning off XML validation or using a different XmlBeanDefinitionParser implementation.

Parameters:
  `beanDefinitionReader` - the bean definition reader used by this context
See Also:
  - `XmlBeanDefinitionReader.setValidationMode(int)`
  - `XmlBeanDefinitionReader.setDocumentReaderClass(java.lang.Class<? extends org.springframework.beans.factory.xml.BeanDefinitionDocumentReader>)`

### loadBeanDefinitions

protected void loadBeanDefinitions(org.springframework.beans.factory.xml.XmlBeanDefinitionReader reader) throws IOException
Load the bean definitions with the given XmlBeanDefinitionReader.

The lifecycle of the bean factory is handled by the refreshBeanFactory method; therefore this method is just supposed to load and/or register bean definitions.

Delegates to a ResourcePatternResolver for resolving location patterns into Resource instances.

Throws:
  `IOException` - if the required XML document isn't found
See Also:
  - `AbstractRefreshableApplicationContext.refreshBeanFactory()`
  - `AbstractRefreshableWebApplicationContext.getConfigLocations()`
  - `AbstractApplicationContext.getResources(java.lang.String)`
  - `AbstractRefreshableWebApplicationContext.getResourcePatternResolver()`

### getDefaultConfigLocations

protected String[] getDefaultConfigLocations()
The default location for the root context is "/WEB-INF/applicationContext.xml", and "/WEB-INF/test-servlet.xml" for a context with the namespace "test-servlet" (like for a DispatcherServlet instance with the servlet-name "test").

Overrides:
  `getDefaultConfigLocations` in class `org.springframework.context.support.AbstractRefreshableConfigApplicationContext`