Class AnnotationConfigContextLoader
- All Implemented Interfaces:
AotContextLoader, ContextLoader, SmartContextLoader
AbstractGenericContextLoader
that loads
bean definitions from component classes.
See the Javadoc for
@ContextConfiguration
for a definition of component class.
Note: AnnotationConfigContextLoader
supports component classes
rather than the String-based resource locations defined by the legacy
ContextLoader
API. Thus,
although AnnotationConfigContextLoader
extends
AbstractGenericContextLoader
, AnnotationConfigContextLoader
does not support any String-based methods defined by
AbstractContextLoader
or AbstractGenericContextLoader
.
Consequently, AnnotationConfigContextLoader
should chiefly be
considered a SmartContextLoader
rather than a ContextLoader
.
- Since:
- 3.1
- Author:
- Sam Brannen
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected BeanDefinitionReader
AnnotationConfigContextLoader
should be used as aSmartContextLoader
, not as a legacyContextLoader
.protected Class<?>[]
detectDefaultConfigurationClasses
(Class<?> declaringClass) Detect the default configuration classes for the supplied test class.protected String[]
generateDefaultLocations
(Class<?> clazz) AnnotationConfigContextLoader
should be used as aSmartContextLoader
, not as a legacyContextLoader
.protected String
AnnotationConfigContextLoader
should be used as aSmartContextLoader
, not as a legacyContextLoader
.protected void
loadBeanDefinitions
(GenericApplicationContext context, MergedContextConfiguration mergedConfig) Register classes in the suppliedcontext
from the classes in the suppliedMergedContextConfiguration
.protected String[]
modifyLocations
(Class<?> clazz, String... locations) AnnotationConfigContextLoader
should be used as aSmartContextLoader
, not as a legacyContextLoader
.void
processContextConfiguration
(ContextConfigurationAttributes configAttributes) Process component classes in the suppliedContextConfigurationAttributes
.protected void
validateMergedContextConfiguration
(MergedContextConfiguration mergedConfig) Ensure that the suppliedMergedContextConfiguration
does not containlocations
.Methods inherited from class AbstractGenericContextLoader
createContext, customizeBeanFactory, customizeContext, loadContext, loadContext, loadContextForAotProcessing, loadContextForAotProcessing, loadContextForAotRuntime, prepareContext
Methods inherited from class AbstractContextLoader
customizeContext, getResourceSuffixes, isGenerateDefaultLocations, prepareContext, processLocations
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface SmartContextLoader
processLocations
-
Constructor Details
-
AnnotationConfigContextLoader
public AnnotationConfigContextLoader()
-
-
Method Details
-
processContextConfiguration
Process component classes in the suppliedContextConfigurationAttributes
.If the component classes are
null
or empty andAbstractContextLoader.isGenerateDefaultLocations()
returnstrue
, thisSmartContextLoader
will attempt todetect default configuration classes
. If defaults are detected they will beset
in the supplied configuration attributes. Otherwise, properties in the supplied configuration attributes will not be modified.- Specified by:
processContextConfiguration
in interfaceSmartContextLoader
- Overrides:
processContextConfiguration
in classAbstractContextLoader
- Parameters:
configAttributes
- the context configuration attributes to process- See Also:
-
detectDefaultConfigurationClasses
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:
-
modifyLocations
AnnotationConfigContextLoader
should be used as aSmartContextLoader
, not as a legacyContextLoader
. Consequently, this method is not supported.- Overrides:
modifyLocations
in 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:
-
generateDefaultLocations
AnnotationConfigContextLoader
should be used as aSmartContextLoader
, not as a legacyContextLoader
. Consequently, this method is not supported.- Overrides:
generateDefaultLocations
in 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:
-
getResourceSuffix
AnnotationConfigContextLoader
should be used as aSmartContextLoader
, not as a legacyContextLoader
. Consequently, this method is not supported.- Specified by:
getResourceSuffix
in classAbstractContextLoader
- Returns:
- the resource suffix; never
null
or empty - Throws:
UnsupportedOperationException
- in this implementation- See Also:
-
validateMergedContextConfiguration
Ensure that the suppliedMergedContextConfiguration
does not containlocations
.- Overrides:
validateMergedContextConfiguration
in classAbstractGenericContextLoader
- Parameters:
mergedConfig
- the merged configuration to validate- Since:
- 4.0.4
- See Also:
-
loadBeanDefinitions
protected void loadBeanDefinitions(GenericApplicationContext context, MergedContextConfiguration mergedConfig) Register classes in the suppliedcontext
from the classes in the suppliedMergedContextConfiguration
.Each class must represent a component class. An
AnnotatedBeanDefinitionReader
is used to register the appropriate bean definitions.Note that this method does not call
createBeanDefinitionReader(GenericApplicationContext)
sinceAnnotatedBeanDefinitionReader
is not an instance ofBeanDefinitionReader
.- Overrides:
loadBeanDefinitions
in classAbstractGenericContextLoader
- Parameters:
context
- the context in which the component classes should be registeredmergedConfig
- the merged configuration from which the classes should be retrieved- See Also:
-
createBeanDefinitionReader
AnnotationConfigContextLoader
should be used as aSmartContextLoader
, not as a legacyContextLoader
. Consequently, this method is not supported.- Specified by:
createBeanDefinitionReader
in classAbstractGenericContextLoader
- Parameters:
context
- the context for which theBeanDefinitionReader
should be created- Returns:
- a
BeanDefinitionReader
for the supplied context - Throws:
UnsupportedOperationException
- in this implementation- See Also:
-