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

### Nested Class Summary

Nested Classes
`protected class` `CacheAspectSupport.CacheOperationContext`
`static interface` `CacheAspectSupport.Invoker`

### Field Summary

Fields
`protected Log` `logger`

### Constructor Summary

Constructors
Constructor and Description
`CacheAspectSupport()`

### Method Summary

Methods
`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)