org.springframework.cache.support

## Class CompositeCacheManager

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

- All Implemented Interfaces:
    InitializingBean, CacheManager

      public class CompositeCacheManager
      extends Object
      implements CacheManager, 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 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.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()` Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
    `Cache` | `getCache(String name)` Return the cache associated with the given name.
    `Collection<String>` | `getCacheNames()` Return 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 Detail

    - #### 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 Detail

    - #### 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()

      Description copied from interface: `InitializingBean`
      Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

      This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.

      Specified by:
        `afterPropertiesSet` in interface `InitializingBean`

    - #### getCache

          public Cache getCache(String name)

      Description copied from interface: `CacheManager`
      Return the cache associated with the given name.
      Specified by:
        `getCache` in interface `CacheManager`
      Parameters:
        `name` - the cache identifier (must not be `null`)
      Returns:
        the associated cache, or `null` if none found

    - #### getCacheNames

          public Collection<String> getCacheNames()

      Description copied from interface: `CacheManager`
      Return 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