public class GuavaCacheManager extends Object implements CacheManager, DisposableBean
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(String... cacheNames)
Construct a static GuavaCacheManager,
managing caches for the specified cache names only.
|
Modifier and Type | Method and Description |
---|---|
protected Cache |
createGuavaCache(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.
|
void |
destroy()
Invoked by a BeanFactory on destruction of a singleton.
|
Cache |
getCache(String name)
Return the cache associated with the given name.
|
Collection<String> |
getCacheNames()
Return a collection of the caches known by this cache manager.
|
void |
setCacheBuilder(com.google.common.cache.CacheBuilder<Object,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<Object,Object> cacheLoader)
Set the Guava CacheLoader to use for building each individual
GuavaCache instance, turning it into a LoadingCache. |
void |
setCacheNames(Collection<String> cacheNames)
Specify the set of cache names for this CacheManager's 'static' mode.
|
void |
setCacheSpecification(String cacheSpecification)
Set the Guava cache specification String to use for building each
individual
GuavaCache instance. |
public GuavaCacheManager()
public GuavaCacheManager(String... cacheNames)
public void setCacheNames(Collection<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.
public void setCacheBuilder(com.google.common.cache.CacheBuilder<Object,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(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<Object,Object> cacheLoader)
GuavaCache
instance, turning it into a LoadingCache.createNativeGuavaCache(java.lang.String)
,
CacheBuilder.build(CacheLoader)
,
LoadingCache
public Collection<String> getCacheNames()
CacheManager
getCacheNames
in interface CacheManager
public Cache getCache(String name)
CacheManager
getCache
in interface CacheManager
name
- cache identifier (must not be null
)null
if none is foundprotected Cache createGuavaCache(String name)
name
- the name of the cacheprotected com.google.common.cache.Cache<Object,Object> createNativeGuavaCache(String name)
name
- the name of the cachepublic void destroy()
DisposableBean
destroy
in interface DisposableBean