Class DefaultCacheAwareContextLoaderDelegate
- All Implemented Interfaces:
CacheAwareContextLoaderDelegate
CacheAwareContextLoaderDelegate interface.
To use a static DefaultContextCache, invoke the
DefaultCacheAwareContextLoaderDelegate() constructor; otherwise,
invoke the DefaultCacheAwareContextLoaderDelegate(ContextCache)
and provide a custom ContextCache implementation.
As of Spring Framework 6.0, this class loads ApplicationContextFailureProcessor
implementations via the SpringFactoriesLoader mechanism and delegates to them in
loadContext(MergedContextConfiguration) to process context load failures.
- Since:
- 4.1
- Author:
- Sam Brannen
-
Constructor Summary
ConstructorsConstructorDescriptionConstruct a newDefaultCacheAwareContextLoaderDelegateusing a staticDefaultContextCache.DefaultCacheAwareContextLoaderDelegate(ContextCache contextCache) Construct a newDefaultCacheAwareContextLoaderDelegateusing the suppliedContextCache. -
Method Summary
Modifier and TypeMethodDescriptionvoidcloseContext(MergedContextConfiguration mergedContextConfiguration, DirtiesContext.HierarchyMode hierarchyMode) Remove the application context for the suppliedMergedContextConfigurationfrom theContextCacheand close it if it is an instance ofConfigurableApplicationContext.protected ContextCacheGet theContextCacheused by this context loader delegate.booleanisContextLoaded(MergedContextConfiguration mergedContextConfiguration) Determine if the application context for the suppliedMergedContextConfigurationhas been loaded (i.e., is present in theContextCache).loadContext(MergedContextConfiguration mergedContextConfiguration) Load the application context for the suppliedMergedContextConfigurationby delegating to theContextLoaderconfigured in the givenMergedContextConfiguration.protected ApplicationContextloadContextInAotMode(org.springframework.test.context.cache.AotMergedContextConfiguration aotMergedConfig) protected ApplicationContextloadContextInternal(MergedContextConfiguration mergedContextConfiguration) Load theApplicationContextfor the supplied merged context configuration.
-
Constructor Details
-
DefaultCacheAwareContextLoaderDelegate
public DefaultCacheAwareContextLoaderDelegate()Construct a newDefaultCacheAwareContextLoaderDelegateusing a staticDefaultContextCache.This default cache is static so that each context can be cached and reused for all subsequent tests that declare the same unique context configuration within the same JVM process.
-
DefaultCacheAwareContextLoaderDelegate
Construct a newDefaultCacheAwareContextLoaderDelegateusing the suppliedContextCache.- See Also:
-
-
Method Details
-
isContextLoaded
Description copied from interface:CacheAwareContextLoaderDelegateDetermine if the application context for the suppliedMergedContextConfigurationhas been loaded (i.e., is present in theContextCache).Implementations of this method must not load the application context as a side effect. In addition, implementations of this method should not log the cache statistics via
ContextCache.logStatistics().The default implementation of this method always returns
false. CustomCacheAwareContextLoaderDelegateimplementations are therefore highly encouraged to override this method with a more meaningful implementation. Note that the standardCacheAwareContextLoaderDelegateimplementation in Spring overrides this method appropriately.- Specified by:
isContextLoadedin interfaceCacheAwareContextLoaderDelegate- Parameters:
mergedContextConfiguration- the merged context configuration used to load the application context; nevernull- Returns:
trueif the application context has been loaded- See Also:
-
loadContext
Description copied from interface:CacheAwareContextLoaderDelegateLoad the application context for the suppliedMergedContextConfigurationby delegating to theContextLoaderconfigured in the givenMergedContextConfiguration.If the context is present in the
ContextCacheit will simply be returned; otherwise, it will be loaded, stored in the cache, and returned.As of Spring Framework 6.0, implementations of this method should load
ApplicationContextFailureProcessorimplementations via theSpringFactoriesLoadermechanism, catch any exception thrown by theContextLoader, and delegate to each of the configured failure processors to process the context load failure if the exception is an instance ofContextLoadException.The cache statistics should be logged by invoking
ContextCache.logStatistics().- Specified by:
loadContextin interfaceCacheAwareContextLoaderDelegate- Parameters:
mergedContextConfiguration- the merged context configuration to use to load the application context; nevernull- Returns:
- the application context (never
null) - See Also:
-
closeContext
public void closeContext(MergedContextConfiguration mergedContextConfiguration, @Nullable DirtiesContext.HierarchyMode hierarchyMode) Description copied from interface:CacheAwareContextLoaderDelegateRemove the application context for the suppliedMergedContextConfigurationfrom theContextCacheand close it if it is an instance ofConfigurableApplicationContext.The semantics of the supplied
HierarchyModemust be honored when removing the context from the cache. See the Javadoc forDirtiesContext.HierarchyModefor details.Generally speaking, this method should only be called if the state of a singleton bean has been changed (potentially affecting future interaction with the context) or if the context needs to be prematurely removed from the cache.
- Specified by:
closeContextin interfaceCacheAwareContextLoaderDelegate- Parameters:
mergedContextConfiguration- the merged context configuration for the application context to close; nevernullhierarchyMode- the hierarchy mode; may benullif the context is not part of a hierarchy- See Also:
-
getContextCache
Get theContextCacheused by this context loader delegate. -
loadContextInternal
protected ApplicationContext loadContextInternal(MergedContextConfiguration mergedContextConfiguration) throws Exception Load theApplicationContextfor the supplied merged context configuration.Supports both the
SmartContextLoaderandContextLoaderSPIs.- Throws:
Exception- if an error occurs while loading the application context
-
loadContextInAotMode
protected ApplicationContext loadContextInAotMode(org.springframework.test.context.cache.AotMergedContextConfiguration aotMergedConfig) throws Exception - Throws:
Exception
-