Class GuavaCacheManager
- java.lang.Object
- org.springframework.cache.guava.GuavaCacheManager
- All Implemented Interfaces:
CacheManager
public class GuavaCacheManager extends Object implements CacheManager
CacheManagerimplementation that lazily buildsGuavaCacheinstances for eachgetCache(java.lang.String)request. Also supports a 'static' mode where the set of cache names is pre-defined throughsetCacheNames(java.util.Collection<java.lang.String>), with no dynamic creation of further cache regions at runtime.The configuration of the underlying cache can be fine-tuned through a Guava
CacheBuilderorCacheBuilderSpec, passed into this CacheManager throughsetCacheBuilder(com.google.common.cache.CacheBuilder<java.lang.Object, java.lang.Object>)/setCacheBuilderSpec(com.google.common.cache.CacheBuilderSpec). ACacheBuilderSpec-compliant expression value can also be applied via the"cacheSpecification"bean property.Requires Google Guava 12.0 or higher.
- Since:
- 4.0
- Author:
- Juergen Hoeller, Stephane Nicoll
- See Also:
GuavaCache
Constructor Summary
Constructors Constructor Description GuavaCacheManager()Construct a dynamic GuavaCacheManager, lazily creating cache instances as they are being requested.GuavaCacheManager(String... cacheNames)Construct a static GuavaCacheManager, managing caches for the specified cache names only.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected CachecreateGuavaCache(String name)Create a new GuavaCache instance for the specified cache name.protected com.google.common.cache.Cache<Object,Object>createNativeGuavaCache(String name)Create a native Guava Cache instance for the specified cache name.CachegetCache(String name)Get the cache associated with the given name.Collection<String>getCacheNames()Get a collection of the cache names known by this manager.booleanisAllowNullValues()Return whether this cache manager accepts and convertsnullvalues for all of its caches.voidsetAllowNullValues(boolean allowNullValues)Specify whether to accept and convertnullvalues for all caches in this cache manager.voidsetCacheBuilder(com.google.common.cache.CacheBuilder<Object,Object> cacheBuilder)Set the Guava CacheBuilder to use for building each individualGuavaCacheinstance.voidsetCacheBuilderSpec(com.google.common.cache.CacheBuilderSpec cacheBuilderSpec)Set the Guava CacheBuilderSpec to use for building each individualGuavaCacheinstance.voidsetCacheLoader(com.google.common.cache.CacheLoader<Object,Object> cacheLoader)Set the Guava CacheLoader to use for building each individualGuavaCacheinstance, turning it into a LoadingCache.voidsetCacheNames(Collection<String> cacheNames)Specify the set of cache names for this CacheManager's 'static' mode.voidsetCacheSpecification(String cacheSpecification)Set the Guava cache specification String to use for building each individualGuavaCacheinstance.
Constructor Detail
GuavaCacheManager
public GuavaCacheManager()
Construct a dynamic GuavaCacheManager, lazily creating cache instances as they are being requested.
GuavaCacheManager
public GuavaCacheManager(String... cacheNames)
Construct a static GuavaCacheManager, managing caches for the specified cache names only.
Method Detail
setCacheNames
public void setCacheNames(Collection<String> cacheNames)
Specify the set of cache names for this CacheManager's 'static' mode.The number of caches and their names will be fixed after a call to this method, with no creation of further cache regions at runtime.
Calling this with a
nullcollection argument resets the mode to 'dynamic', allowing for further creation of caches again.
setCacheBuilder
public void setCacheBuilder(com.google.common.cache.CacheBuilder<Object,Object> cacheBuilder)
Set the Guava CacheBuilder to use for building each individualGuavaCacheinstance.- See Also:
createNativeGuavaCache(java.lang.String),CacheBuilder.build()
setCacheBuilderSpec
public void setCacheBuilderSpec(com.google.common.cache.CacheBuilderSpec cacheBuilderSpec)
Set the Guava CacheBuilderSpec to use for building each individualGuavaCacheinstance.- See Also:
createNativeGuavaCache(java.lang.String),CacheBuilder.from(CacheBuilderSpec)
setCacheSpecification
public void setCacheSpecification(String cacheSpecification)
Set the Guava cache specification String to use for building each individualGuavaCacheinstance. The given value needs to comply with Guava'sCacheBuilderSpec(see its javadoc).- See Also:
createNativeGuavaCache(java.lang.String),CacheBuilder.from(String)
setCacheLoader
public void setCacheLoader(com.google.common.cache.CacheLoader<Object,Object> cacheLoader)
Set the Guava CacheLoader to use for building each individualGuavaCacheinstance, turning it into a LoadingCache.- See Also:
createNativeGuavaCache(java.lang.String),CacheBuilder.build(CacheLoader),LoadingCache
setAllowNullValues
public void setAllowNullValues(boolean allowNullValues)
Specify whether to accept and convertnullvalues for all caches in this cache manager.Default is "true", despite Guava itself not supporting
nullvalues. An internal holder object will be used to store user-levelnulls.
isAllowNullValues
public boolean isAllowNullValues()
Return whether this cache manager accepts and convertsnullvalues for all of its caches.
getCacheNames
public Collection<String> getCacheNames()
Description copied from interface:CacheManagerGet a collection of the cache names known by this manager.- Specified by:
getCacheNamesin interfaceCacheManager- Returns:
- the names of all caches known by the cache manager
getCache
public Cache getCache(String name)
Description copied from interface:CacheManagerGet the cache associated with the given name.Note that the cache may be lazily created at runtime if the native provider supports it.
- Specified by:
getCachein interfaceCacheManager- Parameters:
name- the cache identifier (must not benull)- Returns:
- the associated cache, or
nullif such a cache does not exist or could be not created
createGuavaCache
protected Cache createGuavaCache(String name)
Create a new GuavaCache instance for the specified cache name.- Parameters:
name- the name of the cache- Returns:
- the Spring GuavaCache adapter (or a decorator thereof)
createNativeGuavaCache
protected com.google.common.cache.Cache<Object,Object> createNativeGuavaCache(String name)
Create a native Guava Cache instance for the specified cache name.- Parameters:
name- the name of the cache- Returns:
- the native Guava Cache instance