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 the containing `BeanFactory` after it has set all bean properties and satisfied `BeanFactoryAware`, `ApplicationContextAware` etc.
    `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 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 the containing `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.

      Specified by:
        `afterPropertiesSet` in interface `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