org.springframework.cache.interceptor

## Class CacheAspectSupport

- java.lang.Object
- - org.springframework.cache.interceptor.CacheAspectSupport

- All Implemented Interfaces:
    InitializingBean
  Direct Known Subclasses:
    CacheInterceptor

      public abstract class CacheAspectSupport
      extends Object
      implements InitializingBean

  Base class for caching aspects, such as the `CacheInterceptor` or an AspectJ aspect.

  This enables the underlying Spring caching infrastructure to be used easily to implement an aspect for any aspect system.

  Subclasses are responsible for calling methods in this class in the correct order.

  Uses the Strategy design pattern. A `CacheManager` implementation will perform the actual cache management, and a `CacheOperationSource` is used for determining caching operations.

  A cache aspect is serializable if its `CacheManager` and `CacheOperationSource` are serializable.

  Since:
    3.1
  Author:
    Costin Leau, Juergen Hoeller, Chris Beams, Phillip Webb

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected class` | `CacheAspectSupport.CacheOperationContext`
    `static interface` | `CacheAspectSupport.Invoker`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Log` | `logger`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CacheAspectSupport()`

  - ### Method Summary

    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).
    `protected Object` | `execute(CacheAspectSupport.Invoker invoker, Object target, Method method, Object[] args)`
    `CacheManager` | `getCacheManager()` Return the CacheManager that this cache aspect delegates to.
    `CacheOperationSource` | `getCacheOperationSource()` Return the CacheOperationSource for this cache aspect.
    `protected Collection<Cache>` | `getCaches(CacheOperation operation)`
    `KeyGenerator` | `getKeyGenerator()` Return the KeyGenerator for this cache aspect,
    `protected CacheAspectSupport.CacheOperationContext` | `getOperationContext(CacheOperation operation, Method method, Object[] args, Object target, Class<?> targetClass)`
    `protected String` | `methodIdentification(Method method, Class<?> targetClass)` Convenience method to return a String representation of this Method for use in logging.
    `void` | `setCacheManager(CacheManager cacheManager)` Set the CacheManager that this cache aspect should delegate to.
    `void` | `setCacheOperationSources(CacheOperationSource... cacheOperationSources)` Set one or more cache operation sources which are used to find the cache attributes.
    `void` | `setKeyGenerator(KeyGenerator keyGenerator)` Set the KeyGenerator for this cache aspect.

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

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

- - ### Field Detail

    - #### logger

          protected final Log logger

  - ### Constructor Detail

    - #### CacheAspectSupport

          public CacheAspectSupport()

  - ### Method Detail

    - #### setCacheManager

          public void setCacheManager(CacheManager cacheManager)

      Set the CacheManager that this cache aspect should delegate to.

    - #### getCacheManager

          public CacheManager getCacheManager()

      Return the CacheManager that this cache aspect delegates to.

    - #### setCacheOperationSources

          public void setCacheOperationSources(CacheOperationSource... cacheOperationSources)

      Set one or more cache operation sources which are used to find the cache attributes. If more than one source is provided, they will be aggregated using a `CompositeCacheOperationSource`.
      Parameters:
        `cacheOperationSources` - must not be `null`

    - #### getCacheOperationSource

          public CacheOperationSource getCacheOperationSource()

      Return the CacheOperationSource for this cache aspect.

    - #### setKeyGenerator

          public void setKeyGenerator(KeyGenerator keyGenerator)

      Set the KeyGenerator for this cache aspect. Default is `DefaultKeyGenerator`.

    - #### getKeyGenerator

          public KeyGenerator getKeyGenerator()

      Return the KeyGenerator for this cache aspect,

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

    - #### methodIdentification

          protected String methodIdentification(Method method,
                                    Class<?> targetClass)

      Convenience method to return a String representation of this Method for use in logging. Can be overridden in subclasses to provide a different identifier for the given method.
      Parameters:
        `method` - the method we're interested in
        `targetClass` - class the method is on
      Returns:
        log message identifying this method
      See Also:
        `ClassUtils.getQualifiedMethodName(java.lang.reflect.Method)`

    - #### getCaches

          protected Collection<Cache> getCaches(CacheOperation operation)

    - #### getOperationContext

          protected CacheAspectSupport.CacheOperationContext getOperationContext(CacheOperation operation,
                                                                     Method method,
                                                                     Object[] args,
                                                                     Object target,
                                                                     Class<?> targetClass)

    - #### execute

          protected Object execute(CacheAspectSupport.Invoker invoker,
                       Object target,
                       Method method,
                       Object[] args)