public class GuavaCacheManager extends java.lang.Object implements CacheManager
CacheManager implementation that lazily builds GuavaCache
instances for each getCache(java.lang.String) request. Also supports a 'static' mode
where the set of cache names is pre-defined through setCacheNames(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 CacheBuilder or CacheBuilderSpec, passed into this
CacheManager through setCacheBuilder(com.google.common.cache.CacheBuilder<java.lang.Object, java.lang.Object>)/setCacheBuilderSpec(com.google.common.cache.CacheBuilderSpec).
A CacheBuilderSpec-compliant expression value can also be applied
via the "cacheSpecification" bean property.
Requires Google Guava 12.0 or higher.
GuavaCache| Constructor and Description |
|---|
GuavaCacheManager()
Construct a dynamic GuavaCacheManager,
lazily creating cache instances as they are being requested.
|
GuavaCacheManager(java.lang.String... cacheNames)
Construct a static GuavaCacheManager,
managing caches for the specified cache names only.
|
| Modifier and Type | Method and Description |
|---|---|
protected Cache |
createGuavaCache(java.lang.String name)
Create a new GuavaCache instance for the specified cache name.
|
protected com.google.common.cache.Cache<java.lang.Object,java.lang.Object> |
createNativeGuavaCache(java.lang.String name)
Create a native Guava Cache instance for the specified cache name.
|
Cache |
getCache(java.lang.String name)
Return the cache associated with the given name.
|
java.util.Collection<java.lang.String> |
getCacheNames()
Return a collection of the cache names known by this manager.
|
boolean |
isAllowNullValues()
Return whether this cache manager accepts and converts
null values
for all of its caches. |
void |
setAllowNullValues(boolean allowNullValues)
Specify whether to accept and convert
null values for all caches
in this cache manager. |
void |
setCacheBuilder(com.google.common.cache.CacheBuilder<java.lang.Object,java.lang.Object> cacheBuilder)
Set the Guava CacheBuilder to use for building each individual
GuavaCache instance. |
void |
setCacheBuilderSpec(com.google.common.cache.CacheBuilderSpec cacheBuilderSpec)
Set the Guava CacheBuilderSpec to use for building each individual
GuavaCache instance. |
void |
setCacheLoader(com.google.common.cache.CacheLoader<java.lang.Object,java.lang.Object> cacheLoader)
Set the Guava CacheLoader to use for building each individual
GuavaCache instance, turning it into a LoadingCache. |
void |
setCacheNames(java.util.Collection<java.lang.String> cacheNames)
Specify the set of cache names for this CacheManager's 'static' mode.
|
void |
setCacheSpecification(java.lang.String cacheSpecification)
Set the Guava cache specification String to use for building each
individual
GuavaCache instance. |
public GuavaCacheManager()
public GuavaCacheManager(java.lang.String... cacheNames)
public void setCacheNames(java.util.Collection<java.lang.String> cacheNames)
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 null collection argument resets the
mode to 'dynamic', allowing for further creation of caches again.
public void setCacheBuilder(com.google.common.cache.CacheBuilder<java.lang.Object,java.lang.Object> cacheBuilder)
GuavaCache instance.createNativeGuavaCache(java.lang.String),
CacheBuilder.build()public void setCacheBuilderSpec(com.google.common.cache.CacheBuilderSpec cacheBuilderSpec)
GuavaCache instance.createNativeGuavaCache(java.lang.String),
CacheBuilder.from(CacheBuilderSpec)public void setCacheSpecification(java.lang.String cacheSpecification)
GuavaCache instance. The given value needs to
comply with Guava's CacheBuilderSpec (see its javadoc).createNativeGuavaCache(java.lang.String),
CacheBuilder.from(String)public void setCacheLoader(com.google.common.cache.CacheLoader<java.lang.Object,java.lang.Object> cacheLoader)
GuavaCache instance, turning it into a LoadingCache.createNativeGuavaCache(java.lang.String),
CacheBuilder.build(CacheLoader),
LoadingCachepublic void setAllowNullValues(boolean allowNullValues)
null values for all caches
in this cache manager.
Default is "true", despite Guava itself not supporting null values.
An internal holder object will be used to store user-level nulls.
public boolean isAllowNullValues()
null values
for all of its caches.public java.util.Collection<java.lang.String> getCacheNames()
CacheManagergetCacheNames in interface CacheManagerpublic Cache getCache(java.lang.String name)
CacheManagergetCache in interface CacheManagername - the cache identifier (must not be null)null if none foundprotected Cache createGuavaCache(java.lang.String name)
name - the name of the cacheprotected com.google.common.cache.Cache<java.lang.Object,java.lang.Object> createNativeGuavaCache(java.lang.String name)
name - the name of the cache