public abstract class AbstractGenericWebContextLoader extends AbstractContextLoader
AbstractContextLoader that loads a
 GenericWebApplicationContext.
 If instances of concrete subclasses are invoked via the
 SmartContextLoader
 SPI, the context will be loaded from the MergedContextConfiguration
 provided to loadContext(MergedContextConfiguration). In such cases, a
 SmartContextLoader will decide whether to load the context from
 locations or annotated classes. Note that AbstractGenericWebContextLoader does not support the loadContext(String... locations) method from the legacy
 ContextLoader SPI.
 
Concrete subclasses must provide an appropriate implementation of
 loadBeanDefinitions(org.springframework.web.context.support.GenericWebApplicationContext, org.springframework.test.context.web.WebMergedContextConfiguration).
loadContext(MergedContextConfiguration), 
loadContext(String...)| Constructor and Description | 
|---|
| AbstractGenericWebContextLoader() | 
| Modifier and Type | Method and Description | 
|---|---|
| protected void | configureWebResources(GenericWebApplicationContext context,
                     WebMergedContextConfiguration webMergedConfig)Configures web resources for the supplied web application context (WAC). | 
| protected GenericWebApplicationContext | createContext()Factory method for creating the  GenericWebApplicationContextused
 by thisContextLoader. | 
| protected void | customizeBeanFactory(DefaultListableBeanFactory beanFactory,
                    WebMergedContextConfiguration webMergedConfig)Customize the internal bean factory of the  WebApplicationContextcreated by this context loader. | 
| protected void | customizeContext(GenericWebApplicationContext context,
                WebMergedContextConfiguration webMergedConfig)Customize the  GenericWebApplicationContextcreated by this context
 loader after bean definitions have been loaded into the context but
 before the context is refreshed. | 
| protected abstract void | loadBeanDefinitions(GenericWebApplicationContext context,
                   WebMergedContextConfiguration webMergedConfig)Load bean definitions into the supplied  contextfrom the locations or classes in the suppliedWebMergedContextConfiguration. | 
| ConfigurableApplicationContext | loadContext(MergedContextConfiguration mergedConfig)Load a Spring  WebApplicationContextfrom the suppliedMergedContextConfiguration. | 
| ApplicationContext | loadContext(String... locations)AbstractGenericWebContextLoadershould be used as aSmartContextLoader,
 not as a legacyContextLoader. | 
| protected void | validateMergedContextConfiguration(WebMergedContextConfiguration mergedConfig)Validate the supplied  WebMergedContextConfigurationwith respect to
 what this context loader supports. | 
customizeContext, generateDefaultLocations, getResourceSuffix, getResourceSuffixes, isGenerateDefaultLocations, modifyLocations, prepareContext, processContextConfiguration, processLocationsprotected static final Log logger
public final ConfigurableApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws Exception
WebApplicationContext from the supplied
 MergedContextConfiguration.
 Implementation details:
validateMergedContextConfiguration(WebMergedContextConfiguration)
 to allow subclasses to validate the supplied configuration before proceeding.GenericWebApplicationContext instance.MergedContextConfiguration references a
 parent configuration,
 the corresponding ApplicationContext will be retrieved and
 set as the parent
 for the context created by this method.configureWebResources(org.springframework.web.context.support.GenericWebApplicationContext, org.springframework.test.context.web.WebMergedContextConfiguration) to create the
 MockServletContext and set it in the WebApplicationContext.AbstractContextLoader.prepareContext(org.springframework.context.ConfigurableApplicationContext, org.springframework.test.context.MergedContextConfiguration) to allow for customizing the context
 before bean definitions are loaded.customizeBeanFactory(org.springframework.beans.factory.support.DefaultListableBeanFactory, org.springframework.test.context.web.WebMergedContextConfiguration) to allow for customizing the
 context's DefaultListableBeanFactory.loadBeanDefinitions(org.springframework.web.context.support.GenericWebApplicationContext, org.springframework.test.context.web.WebMergedContextConfiguration) to populate the context
 from the locations or classes in the supplied MergedContextConfiguration.AnnotationConfigUtils for
 registering
 annotation configuration processors.customizeContext(org.springframework.web.context.support.GenericWebApplicationContext, org.springframework.test.context.web.WebMergedContextConfiguration) to allow for customizing the context
 before it is refreshed.Refreshes the
 context and registers a JVM shutdown hook for it.mergedConfig - the merged context configuration to use to load the
 application contextException - if context loading failedSmartContextLoader.loadContext(MergedContextConfiguration), 
GenericWebApplicationContextprotected void validateMergedContextConfiguration(WebMergedContextConfiguration mergedConfig)
WebMergedContextConfiguration with respect to
 what this context loader supports.
 The default implementation is a no-op but can be overridden by subclasses as appropriate.
mergedConfig - the merged configuration to validateIllegalStateException - if the supplied configuration is not valid
 for this context loaderprotected GenericWebApplicationContext createContext()
GenericWebApplicationContext used
 by this ContextLoader.
 The default implementation creates a GenericWebApplicationContext
 using the default constructor. This method may be overridden — for
 example, to use a custom context subclass or to create a
 GenericWebApplicationContext with a custom
 DefaultListableBeanFactory implementation.
GenericWebApplicationContextprotected void configureWebResources(GenericWebApplicationContext context, WebMergedContextConfiguration webMergedConfig)
If the supplied WAC has no parent or its parent is not a WAC, the supplied WAC will be configured as the Root WAC (see "Root WAC Configuration" below).
Otherwise the context hierarchy of the supplied WAC will be traversed
 to find the top-most WAC (i.e., the root); and the ServletContext
 of the Root WAC will be set as the ServletContext for the supplied
 WAC.
 
WebMergedContextConfiguration.ResourceLoader is instantiated for the MockServletContext:
 if the resource base path is prefixed with "classpath:", a
 DefaultResourceLoader will be used; otherwise, a
 FileSystemResourceLoader will be used.MockServletContext will be created using the resource base
 path and resource loader.GenericWebApplicationContext is then stored in
 the MockServletContext under the
 WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE key.MockServletContext is set in the
 WebApplicationContext.context - the web application context for which to configure the web resourceswebMergedConfig - the merged context configuration to use to load the web application contextprotected void customizeBeanFactory(DefaultListableBeanFactory beanFactory, WebMergedContextConfiguration webMergedConfig)
WebApplicationContext
 created by this context loader.
 The default implementation is empty but can be overridden in subclasses
 to customize DefaultListableBeanFactory's standard settings.
beanFactory - the bean factory created by this context loaderwebMergedConfig - the merged context configuration to use to load the
 web application contextloadContext(MergedContextConfiguration), 
DefaultListableBeanFactory.setAllowBeanDefinitionOverriding(boolean), 
DefaultListableBeanFactory.setAllowEagerClassLoading(boolean), 
AbstractAutowireCapableBeanFactory.setAllowCircularReferences(boolean), 
AbstractAutowireCapableBeanFactory.setAllowRawInjectionDespiteWrapping(boolean)protected abstract void loadBeanDefinitions(GenericWebApplicationContext context, WebMergedContextConfiguration webMergedConfig)
context
 from the locations or classes in the supplied WebMergedContextConfiguration.
 Concrete subclasses must provide an appropriate implementation.
context - the context into which the bean definitions should be loadedwebMergedConfig - the merged context configuration to use to load the
 web application contextloadContext(MergedContextConfiguration)protected void customizeContext(GenericWebApplicationContext context, WebMergedContextConfiguration webMergedConfig)
GenericWebApplicationContext created by this context
 loader after bean definitions have been loaded into the context but
 before the context is refreshed.
 The default implementation simply delegates to
 AbstractContextLoader.customizeContext(ConfigurableApplicationContext, MergedContextConfiguration).
context - the newly created web application contextwebMergedConfig - the merged context configuration to use to load the
 web application contextloadContext(MergedContextConfiguration), 
AbstractContextLoader.customizeContext(ConfigurableApplicationContext, MergedContextConfiguration)public final ApplicationContext loadContext(String... locations) throws Exception
AbstractGenericWebContextLoader should be used as a
 SmartContextLoader,
 not as a legacy ContextLoader.
 Consequently, this method is not supported.locations - the resource locations to use to load the application contextUnsupportedOperationException - in this implementationException - if context loading failedContextLoader.loadContext(java.lang.String[])