Interface CacheAwareContextLoaderDelegate
- All Known Implementing Classes:
DefaultCacheAwareContextLoaderDelegate
CacheAwareContextLoaderDelegate
is responsible for loading and closing application
contexts, interacting transparently with a
ContextCache
behind the scenes.
Note: CacheAwareContextLoaderDelegate
does not extend the
ContextLoader
or SmartContextLoader
interface.
- Since:
- 3.2.2
- Author:
- Sam Brannen
-
Method Summary
Modifier and TypeMethodDescriptionvoid
closeContext
(MergedContextConfiguration mergedContextConfiguration, DirtiesContext.HierarchyMode hierarchyMode) Remove the application context for the suppliedMergedContextConfiguration
from theContextCache
and close it if it is an instance ofConfigurableApplicationContext
.default boolean
isContextLoaded
(MergedContextConfiguration mergedContextConfiguration) Determine if the application context for the suppliedMergedContextConfiguration
has been loaded (i.e., is present in theContextCache
).loadContext
(MergedContextConfiguration mergedContextConfiguration) Load the application context for the suppliedMergedContextConfiguration
by delegating to theContextLoader
configured in the givenMergedContextConfiguration
.
-
Method Details
-
isContextLoaded
Determine if the application context for the suppliedMergedContextConfiguration
has 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
. CustomCacheAwareContextLoaderDelegate
implementations are therefore highly encouraged to override this method with a more meaningful implementation. Note that the standardCacheAwareContextLoaderDelegate
implementation in Spring overrides this method appropriately.- Parameters:
mergedContextConfiguration
- the merged context configuration used to load the application context; nevernull
- Returns:
true
if the application context has been loaded- Since:
- 5.2
- See Also:
-
loadContext
Load the application context for the suppliedMergedContextConfiguration
by delegating to theContextLoader
configured in the givenMergedContextConfiguration
.If the context is present in the
ContextCache
it 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
ApplicationContextFailureProcessor
implementations via theSpringFactoriesLoader
mechanism, 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()
.- Parameters:
mergedContextConfiguration
- the merged context configuration to use to load the application context; nevernull
- Returns:
- the application context (never
null
) - Throws:
IllegalStateException
- if an error occurs while retrieving or loading the application context- See Also:
-
closeContext
void closeContext(MergedContextConfiguration mergedContextConfiguration, @Nullable DirtiesContext.HierarchyMode hierarchyMode) Remove the application context for the suppliedMergedContextConfiguration
from theContextCache
and close it if it is an instance ofConfigurableApplicationContext
.The semantics of the supplied
HierarchyMode
must be honored when removing the context from the cache. See the Javadoc forDirtiesContext.HierarchyMode
for 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.
- Parameters:
mergedContextConfiguration
- the merged context configuration for the application context to close; nevernull
hierarchyMode
- the hierarchy mode; may benull
if the context is not part of a hierarchy- Since:
- 4.1
- See Also:
-