接口 ContextCache
- 所有已知实现类:
DefaultContextCache
public interface ContextCache
ContextCache
defines the SPI for caching SpringApplicationContexts
within the Spring TestContext Framework.A
ContextCache
maintains a cache ofApplicationContexts
keyed byMergedContextConfiguration
instances, potentially configured with a maximum size and a custom eviction policy.Rationale
Context caching can have significant performance benefits if context initialization is complex. Although the initialization of a Spring context itself is typically very quick, some beans in a context — for example, an embedded database or a
LocalContainerEntityManagerFactoryBean
for working with JPA — may take several seconds to initialize. Hence it often makes sense to perform that initialization only once per test suite or JVM process.- 从以下版本开始:
- 4.2
- 作者:
- Sam Brannen, Juergen Hoeller
- 另请参阅:
ContextCacheUtils.retrieveMaxCacheSize()
字段概要
字段 修饰符和类型 字段 说明 static String
CONTEXT_CACHE_LOGGING_CATEGORY
The name of the logging category used for reportingContextCache
statistics.static int
DEFAULT_MAX_CONTEXT_CACHE_SIZE
The default maximum size of the context cache: 32.static String
MAX_CONTEXT_CACHE_SIZE_PROPERTY_NAME
System property used to configure the maximum size of theContextCache
as a positive integer.
方法概要
所有方法 实例方法 抽象方法 修饰符和类型 方法 说明 void
clear()
Clear all contexts from the cache, clearing context hierarchy information as well.void
clearStatistics()
Clear hit and miss count statistics for the cache (i.e., reset counters to zero).boolean
contains(MergedContextConfiguration key)
Determine whether there is a cached context for the given key.ApplicationContext
get(MergedContextConfiguration key)
Obtain a cachedApplicationContext
for the given key.int
getHitCount()
Get the overall hit count for this cache.int
getMissCount()
Get the overall miss count for this cache.int
getParentContextCount()
Determine the number of parent contexts currently tracked within the cache.void
logStatistics()
Log the statistics for thisContextCache
atDEBUG
level using the "org.springframework.test.context.cache" logging category.void
put(MergedContextConfiguration key, ApplicationContext context)
Explicitly add anApplicationContext
instance to the cache under the given key, potentially honoring a custom eviction policy.void
remove(MergedContextConfiguration key, DirtiesContext.HierarchyMode hierarchyMode)
Remove the context with the given key from the cache and explicitly close it if it is an instance ofConfigurableApplicationContext
.void
reset()
Reset all state maintained by this cache including statistics.int
size()
Determine the number of contexts currently stored in the cache.
字段详细资料
CONTEXT_CACHE_LOGGING_CATEGORY
static final String CONTEXT_CACHE_LOGGING_CATEGORY
The name of the logging category used for reportingContextCache
statistics.- 另请参阅:
- 常量字段值
DEFAULT_MAX_CONTEXT_CACHE_SIZE
static final int DEFAULT_MAX_CONTEXT_CACHE_SIZE
The default maximum size of the context cache: 32.- 从以下版本开始:
- 4.3
- 另请参阅:
MAX_CONTEXT_CACHE_SIZE_PROPERTY_NAME
, 常量字段值
MAX_CONTEXT_CACHE_SIZE_PROPERTY_NAME
static final String MAX_CONTEXT_CACHE_SIZE_PROPERTY_NAME
System property used to configure the maximum size of theContextCache
as a positive integer. May alternatively be configured via theSpringProperties
mechanism.Note that implementations of
ContextCache
are not required to actually support a maximum cache size. Consult the documentation of the corresponding implementation for details.- 从以下版本开始:
- 4.3
- 另请参阅:
DEFAULT_MAX_CONTEXT_CACHE_SIZE
, 常量字段值
方法详细资料
contains
boolean contains(MergedContextConfiguration key)
Determine whether there is a cached context for the given key.- 参数:
key
- the context key (nevernull
)- 返回:
true
if the cache contains a context with the given key
get
ApplicationContext get(MergedContextConfiguration key)
Obtain a cachedApplicationContext
for the given key.- 参数:
key
- the context key (nevernull
)- 返回:
- the corresponding
ApplicationContext
instance, ornull
if not found in the cache - 另请参阅:
remove(org.springframework.test.context.MergedContextConfiguration, org.springframework.test.annotation.DirtiesContext.HierarchyMode)
put
void put(MergedContextConfiguration key, ApplicationContext context)
Explicitly add anApplicationContext
instance to the cache under the given key, potentially honoring a custom eviction policy.- 参数:
key
- the context key (nevernull
)context
- theApplicationContext
instance (nevernull
)
remove
void remove(MergedContextConfiguration key, DirtiesContext.HierarchyMode hierarchyMode)
Remove the context with the given key from the cache and explicitly close it if it is an instance ofConfigurableApplicationContext
.Generally speaking, this method should be called to properly evict a context from the cache (e.g., due to a custom eviction policy) or if the state of a singleton bean has been modified, potentially affecting future interaction with the context.
In addition, the semantics of the supplied
HierarchyMode
must be honored. See the Javadoc forDirtiesContext.HierarchyMode
for details.- 参数:
key
- the context key; nevernull
hierarchyMode
- the hierarchy mode; may benull
if the context is not part of a hierarchy
size
int size()
Determine the number of contexts currently stored in the cache.If the cache contains more than
Integer.MAX_VALUE
elements, this method must returnInteger.MAX_VALUE
.
getParentContextCount
int getParentContextCount()
Determine the number of parent contexts currently tracked within the cache.
getHitCount
int getHitCount()
Get the overall hit count for this cache.A hit is any access to the cache that returns a non-null context for the queried key.
getMissCount
int getMissCount()
Get the overall miss count for this cache.A miss is any access to the cache that returns a
null
context for the queried key.
reset
void reset()
Reset all state maintained by this cache including statistics.- 另请参阅:
clear()
,clearStatistics()
clear
void clear()
Clear all contexts from the cache, clearing context hierarchy information as well.
clearStatistics
void clearStatistics()
Clear hit and miss count statistics for the cache (i.e., reset counters to zero).
logStatistics
void logStatistics()
Log the statistics for thisContextCache
atDEBUG
level using the "org.springframework.test.context.cache" logging category.The following information should be logged.
- name of the concrete
ContextCache
implementation - size()
- parent context count
- hit count
- miss count
- any other information useful for monitoring the state of this cache
- name of the concrete