public class AnnotationConfigContextLoader extends AbstractGenericContextLoader
AbstractGenericContextLoader
that loads
bean definitions from
configuration classes
.
Note: AnnotationConfigContextLoader
supports
configuration 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
.
#processContextConfiguration()
,
#detectDefaultConfigurationClasses()
,
#loadBeanDefinitions()
Modifier and Type | Field and Description |
---|---|
private static Log |
logger |
Constructor and Description |
---|
AnnotationConfigContextLoader() |
Modifier and Type | Method and Description |
---|---|
protected BeanDefinitionReader |
createBeanDefinitionReader(GenericApplicationContext context)
AnnotationConfigContextLoader should be used as a
SmartContextLoader ,
not as a legacy ContextLoader . |
protected java.lang.Class<?>[] |
detectDefaultConfigurationClasses(java.lang.Class<?> declaringClass)
Detect the default configuration classes for the supplied test class.
|
protected java.lang.String[] |
generateDefaultLocations(java.lang.Class<?> clazz)
AnnotationConfigContextLoader should be used as a
SmartContextLoader ,
not as a legacy ContextLoader . |
protected java.lang.String |
getResourceSuffix()
AnnotationConfigContextLoader should be used as a
SmartContextLoader ,
not as a legacy ContextLoader . |
private boolean |
isDefaultConfigurationClassCandidate(java.lang.Class<?> clazz)
Determine if the supplied
Class meets the criteria for being
considered a default configuration class candidate. |
private boolean |
isStaticNonPrivateAndNonFinal(java.lang.Class<?> clazz) |
protected void |
loadBeanDefinitions(GenericApplicationContext context,
MergedContextConfiguration mergedConfig)
Register
configuration classes
in the supplied context from the classes
in the supplied MergedContextConfiguration . |
protected java.lang.String[] |
modifyLocations(java.lang.Class<?> clazz,
java.lang.String... locations)
AnnotationConfigContextLoader should be used as a
SmartContextLoader ,
not as a legacy ContextLoader . |
void |
processContextConfiguration(ContextConfigurationAttributes configAttributes)
Process configuration classes in the supplied
ContextConfigurationAttributes . |
customizeBeanFactory, customizeContext, loadContext, loadContext, prepareContext
isGenerateDefaultLocations, processLocations
public void processContextConfiguration(ContextConfigurationAttributes configAttributes)
ContextConfigurationAttributes
.
If the configuration classes are null
or empty and
AbstractContextLoader.isGenerateDefaultLocations()
returns true
, this
SmartContextLoader
will 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.
processContextConfiguration
in interface SmartContextLoader
processContextConfiguration
in class AbstractContextLoader
configAttributes
- the context configuration attributes to processorg.springframework.test.context.SmartContextLoader#processContextConfiguration()
,
AbstractContextLoader.isGenerateDefaultLocations()
,
#detectDefaultConfigurationClasses()
private boolean isStaticNonPrivateAndNonFinal(java.lang.Class<?> clazz)
private boolean isDefaultConfigurationClassCandidate(java.lang.Class<?> clazz)
Class
meets the criteria for being
considered a default configuration class candidate.
Specifically, such candidates:
null
private
final
static
@Configuration
clazz
- the class to checktrue
if the supplied class meets the candidate criteriaprotected java.lang.Class<?>[] detectDefaultConfigurationClasses(java.lang.Class<?> declaringClass)
The returned class array will contain all static inner classes of
the supplied class that meet the requirements for @Configuration
class implementations as specified in the documentation for
@Configuration
.
The implementation of this method adheres to the contract defined in the
SmartContextLoader
SPI. Specifically, this method uses introspection to detect default
configuration classes that comply with the constraints required of
@Configuration
class implementations. If a potential candidate
configuration class does meet these requirements, this method will log a
warning, and the potential candidate class will be ignored.
declaringClass
- the test class that declared @ContextConfiguration
null
protected java.lang.String[] modifyLocations(java.lang.Class<?> clazz, java.lang.String... locations)
AnnotationConfigContextLoader
should be used as a
SmartContextLoader
,
not as a legacy ContextLoader
.
Consequently, this method is not supported.modifyLocations
in class AbstractContextLoader
clazz
- the class with which the locations are associatedlocations
- the resource locations to be modifiedjava.lang.UnsupportedOperationException
AbstractContextLoader.modifyLocations(java.lang.Class<?>, java.lang.String...)
protected java.lang.String[] generateDefaultLocations(java.lang.Class<?> clazz)
AnnotationConfigContextLoader
should be used as a
SmartContextLoader
,
not as a legacy ContextLoader
.
Consequently, this method is not supported.generateDefaultLocations
in class AbstractContextLoader
clazz
- the class for which the default locations are to be generatedjava.lang.UnsupportedOperationException
AbstractContextLoader.generateDefaultLocations(java.lang.Class<?>)
protected java.lang.String getResourceSuffix()
AnnotationConfigContextLoader
should be used as a
SmartContextLoader
,
not as a legacy ContextLoader
.
Consequently, this method is not supported.getResourceSuffix
in class AbstractContextLoader
null
or emptyjava.lang.UnsupportedOperationException
AbstractContextLoader.getResourceSuffix()
protected void loadBeanDefinitions(GenericApplicationContext context, MergedContextConfiguration mergedConfig)
configuration classes
in the supplied context
from the classes
in the supplied MergedContextConfiguration
.
Each class must represent an annotated configuration class or component. An
AnnotatedBeanDefinitionReader
is used to register the appropriate
bean definitions.
Note that this method does not call createBeanDefinitionReader(org.springframework.context.support.GenericApplicationContext)
since AnnotatedBeanDefinitionReader
is not an instance of
BeanDefinitionReader
.
loadBeanDefinitions
in class AbstractGenericContextLoader
context
- the context in which the configuration classes should be registeredmergedConfig
- the merged configuration from which the classes should be retrievedAbstractGenericContextLoader.loadBeanDefinitions(org.springframework.context.support.GenericApplicationContext, org.springframework.test.context.MergedContextConfiguration)
protected BeanDefinitionReader createBeanDefinitionReader(GenericApplicationContext context)
AnnotationConfigContextLoader
should be used as a
SmartContextLoader
,
not as a legacy ContextLoader
.
Consequently, this method is not supported.createBeanDefinitionReader
in class AbstractGenericContextLoader
context
- the context for which the BeanDefinitionReader
should be createdBeanDefinitionReader
for the supplied contextjava.lang.UnsupportedOperationException
loadBeanDefinitions(org.springframework.context.support.GenericApplicationContext, org.springframework.test.context.MergedContextConfiguration)
,
AbstractGenericContextLoader.createBeanDefinitionReader(org.springframework.context.support.GenericApplicationContext)