public class CompositeCacheManager extends java.lang.Object implements CacheManager, InitializingBean
CacheManager
implementation that iterates over
a given collection of delegate CacheManager
instances.
Allows NoOpCacheManager
to be automatically added to the end of
the list for handling cache declarations without a backing store. Otherwise,
any custom CacheManager
may play that role of the last delegate as
well, lazily creating cache regions for any requested name.
Note: Regular CacheManagers that this composite manager delegates to need
to return null
from getCache(String)
if they are unaware of
the specified cache name, allowing for iteration to the next delegate in line.
However, most CacheManager
implementations fall back to lazy creation
of named caches once requested; check out the specific configuration details
for a 'static' mode with fixed cache names, if available.
setFallbackToNoOpCache(boolean)
,
ConcurrentMapCacheManager.setCacheNames(java.util.Collection<java.lang.String>)
Modifier and Type | Field and Description |
---|---|
private java.util.List<CacheManager> |
cacheManagers |
private boolean |
fallbackToNoOpCache |
Constructor and Description |
---|
CompositeCacheManager()
Construct an empty CompositeCacheManager, with delegate CacheManagers to
be added via the
"cacheManagers" property. |
CompositeCacheManager(CacheManager... cacheManagers)
Construct a CompositeCacheManager from the given delegate CacheManagers.
|
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet()
Invoked by the containing
BeanFactory after it has set all bean properties
and satisfied BeanFactoryAware , ApplicationContextAware etc. |
Cache |
getCache(java.lang.String name)
Get the cache associated with the given name.
|
java.util.Collection<java.lang.String> |
getCacheNames()
Get a collection of the cache names known by this manager.
|
void |
setCacheManagers(java.util.Collection<CacheManager> cacheManagers)
Specify the CacheManagers to delegate to.
|
void |
setFallbackToNoOpCache(boolean fallbackToNoOpCache)
Indicate whether a
NoOpCacheManager should be added at the end of the delegate list. |
private final java.util.List<CacheManager> cacheManagers
private boolean fallbackToNoOpCache
public CompositeCacheManager()
"cacheManagers"
property.public CompositeCacheManager(CacheManager... cacheManagers)
cacheManagers
- the CacheManagers to delegate topublic void setCacheManagers(java.util.Collection<CacheManager> cacheManagers)
public void setFallbackToNoOpCache(boolean fallbackToNoOpCache)
NoOpCacheManager
should be added at the end of the delegate list.
In this case, any getCache
requests not handled by the configured CacheManagers will
be automatically handled by the NoOpCacheManager
(and hence never return null
).public void afterPropertiesSet()
InitializingBean
BeanFactory
after it has set all bean properties
and satisfied BeanFactoryAware
, ApplicationContextAware
etc.
This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.
afterPropertiesSet
in interface InitializingBean
@Nullable public Cache getCache(java.lang.String name)
CacheManager
Note that the cache may be lazily created at runtime if the native provider supports it.
getCache
in interface CacheManager
name
- the cache identifier (must not be null
)null
if such a cache
does not exist or could be not createdpublic java.util.Collection<java.lang.String> getCacheNames()
CacheManager
getCacheNames
in interface CacheManager