Class AnnotationConfigWebContextLoader
- java.lang.Object
- org.springframework.test.context.support.AbstractContextLoader
- org.springframework.test.context.web.AbstractGenericWebContextLoader
- org.springframework.test.context.web.AnnotationConfigWebContextLoader
- All Implemented Interfaces:
ContextLoader,SmartContextLoader
public class AnnotationConfigWebContextLoader extends AbstractGenericWebContextLoader
Concrete implementation ofAbstractGenericWebContextLoaderthat loads bean definitions from annotated classes.See the Javadoc for
@ContextConfigurationfor a definition of annotated class.Note:
AnnotationConfigWebContextLoadersupports annotated classes rather than the String-based resource locations defined by the legacyContextLoaderAPI. Thus, althoughAnnotationConfigWebContextLoaderextendsAbstractGenericWebContextLoader,AnnotationConfigWebContextLoaderdoes not support any String-based methods defined byAbstractContextLoaderorAbstractGenericWebContextLoader. Consequently,AnnotationConfigWebContextLoadershould chiefly be considered aSmartContextLoaderrather than aContextLoader.
Constructor Summary
Constructors Constructor Description AnnotationConfigWebContextLoader()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Class<?>[]detectDefaultConfigurationClasses(Class<?> declaringClass)Detect the default configuration classes for the supplied test class.protected String[]generateDefaultLocations(Class<?> clazz)AnnotationConfigWebContextLoadershould be used as aSmartContextLoader, not as a legacyContextLoader.protected StringgetResourceSuffix()AnnotationConfigWebContextLoadershould be used as aSmartContextLoader, not as a legacyContextLoader.protected voidloadBeanDefinitions(GenericWebApplicationContext context, WebMergedContextConfiguration webMergedConfig)Register classes in the supplied context from the classes in the suppliedWebMergedContextConfiguration.protected String[]modifyLocations(Class<?> clazz, String... locations)AnnotationConfigWebContextLoadershould be used as aSmartContextLoader, not as a legacyContextLoader.voidprocessContextConfiguration(ContextConfigurationAttributes configAttributes)Process annotated classes in the suppliedContextConfigurationAttributes.protected voidvalidateMergedContextConfiguration(WebMergedContextConfiguration webMergedConfig)Ensure that the suppliedWebMergedContextConfigurationdoes not containlocations.Methods inherited from class org.springframework.test.context.web.AbstractGenericWebContextLoader
configureWebResources, customizeBeanFactory, customizeContext, loadContext, loadContext
Methods inherited from class org.springframework.test.context.support.AbstractContextLoader
customizeContext, getResourceSuffixes, isGenerateDefaultLocations, prepareContext, processLocations
Constructor Detail
AnnotationConfigWebContextLoader
public AnnotationConfigWebContextLoader()
Method Detail
processContextConfiguration
public void processContextConfiguration(ContextConfigurationAttributes configAttributes)
Process annotated classes in the suppliedContextConfigurationAttributes.If the annotated classes are
nullor empty andAbstractContextLoader.isGenerateDefaultLocations()returnstrue, thisSmartContextLoaderwill attempt to detect default configuration classes. If defaults are detected they will be set in the supplied configuration attributes. Otherwise, properties in the supplied configuration attributes will not be modified.- Specified by:
processContextConfigurationin interfaceSmartContextLoader- Overrides:
processContextConfigurationin classAbstractContextLoader- Parameters:
configAttributes- the context configuration attributes to process- See Also:
SmartContextLoader.processContextConfiguration(ContextConfigurationAttributes),AbstractContextLoader.isGenerateDefaultLocations(),detectDefaultConfigurationClasses(Class)
detectDefaultConfigurationClasses
protected Class<?>[] detectDefaultConfigurationClasses(Class<?> declaringClass)
Detect the default configuration classes for the supplied test class.The default implementation simply delegates to
AnnotationConfigContextLoaderUtils.detectDefaultConfigurationClasses(Class).- Parameters:
declaringClass- the test class that declared@ContextConfiguration- Returns:
- an array of default configuration classes, potentially empty but never
null - See Also:
AnnotationConfigContextLoaderUtils
modifyLocations
protected String[] modifyLocations(Class<?> clazz, String... locations)
AnnotationConfigWebContextLoadershould be used as aSmartContextLoader, not as a legacyContextLoader. Consequently, this method is not supported.- Overrides:
modifyLocationsin classAbstractContextLoader- Parameters:
clazz- the class with which the locations are associatedlocations- the resource locations to be modified- Returns:
- an array of modified application context resource locations
- Throws:
UnsupportedOperationException- in this implementation- See Also:
AbstractContextLoader.modifyLocations(java.lang.Class<?>, java.lang.String...)
generateDefaultLocations
protected String[] generateDefaultLocations(Class<?> clazz)
AnnotationConfigWebContextLoadershould be used as aSmartContextLoader, not as a legacyContextLoader. Consequently, this method is not supported.- Overrides:
generateDefaultLocationsin classAbstractContextLoader- Parameters:
clazz- the class for which the default locations are to be generated- Returns:
- an array of default application context resource locations
- Throws:
UnsupportedOperationException- in this implementation- See Also:
AbstractContextLoader.generateDefaultLocations(java.lang.Class<?>)
getResourceSuffix
protected String getResourceSuffix()
AnnotationConfigWebContextLoadershould be used as aSmartContextLoader, not as a legacyContextLoader. Consequently, this method is not supported.- Specified by:
getResourceSuffixin classAbstractContextLoader- Returns:
- the resource suffix; never
nullor empty - Throws:
UnsupportedOperationException- in this implementation- See Also:
AbstractContextLoader.getResourceSuffix()
loadBeanDefinitions
protected void loadBeanDefinitions(GenericWebApplicationContext context, WebMergedContextConfiguration webMergedConfig)
Register classes in the supplied context from the classes in the suppliedWebMergedContextConfiguration.Each class must represent an annotated class. An
AnnotatedBeanDefinitionReaderis used to register the appropriate bean definitions.- Specified by:
loadBeanDefinitionsin classAbstractGenericWebContextLoader- Parameters:
context- the context in which the annotated classes should be registeredwebMergedConfig- the merged configuration from which the classes should be retrieved- See Also:
AbstractGenericWebContextLoader.loadBeanDefinitions(org.springframework.web.context.support.GenericWebApplicationContext, org.springframework.test.context.web.WebMergedContextConfiguration)
validateMergedContextConfiguration
protected void validateMergedContextConfiguration(WebMergedContextConfiguration webMergedConfig)
Ensure that the suppliedWebMergedContextConfigurationdoes not containlocations.- Overrides:
validateMergedContextConfigurationin classAbstractGenericWebContextLoader- Parameters:
webMergedConfig- the merged configuration to validate- Since:
- 4.0.4
- See Also:
AbstractGenericWebContextLoader.validateMergedContextConfiguration(org.springframework.test.context.web.WebMergedContextConfiguration)