Package org.springframework.cache.support

# Class CompositeCacheManager

java.lang.Object
org.springframework.cache.support.CompositeCacheManager

All Implemented Interfaces:
  `org.springframework.beans.factory.InitializingBean`, `CacheManager`

public class CompositeCacheManager extends Object implements CacheManager, org.springframework.beans.factory.InitializingBean
Composite `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.

Since:
  3.1
Author:
  Costin Leau, Juergen Hoeller
See Also:
  - `setFallbackToNoOpCache(boolean)`
  - `ConcurrentMapCacheManager.setCacheNames(java.util.Collection<java.lang.String>)`

## Constructor Summary

Constructors
Constructor
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.

## Method Summary

Modifier and Type
Method
Description
`void`
`afterPropertiesSet()`
`Cache`
`getCache(String name)`
Get the cache associated with the given name.
`Collection<String>`
`getCacheNames()`
Get a collection of the cache names known by this manager.
`void`
`setCacheManagers(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.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### CompositeCacheManager

public CompositeCacheManager()
Construct an empty CompositeCacheManager, with delegate CacheManagers to be added via the `"cacheManagers"` property.

### CompositeCacheManager

public CompositeCacheManager(CacheManager... cacheManagers)
Construct a CompositeCacheManager from the given delegate CacheManagers.

Parameters:
  `cacheManagers` - the CacheManagers to delegate to

## Method Details

### setCacheManagers

public void setCacheManagers(Collection<CacheManager> cacheManagers)
Specify the CacheManagers to delegate to.

### setFallbackToNoOpCache

public void setFallbackToNoOpCache(boolean fallbackToNoOpCache)
Indicate whether a `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`).

### afterPropertiesSet

public void afterPropertiesSet()

Specified by:
  `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`

### getCache

@Nullable public Cache getCache(String name)
Description copied from interface: `CacheManager`
Get 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:
  `getCache` in interface `CacheManager`
Parameters:
  `name` - the cache identifier (must not be `null`)
Returns:
  the associated cache, or `null` if such a cache does not exist or could be not created

### getCacheNames

public Collection<String> getCacheNames()
Description copied from interface: `CacheManager`
Get a collection of the cache names known by this manager.

Specified by:
  `getCacheNames` in interface `CacheManager`
Returns:
  the names of all caches known by the cache manager