org.springframework.cache.interceptor
Class CacheAspectSupport

java.lang.Object
  extended by 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.

If no caching name has been specified in the CacheOperationDefinition, the exposed name will be the fully-qualified class name + "." + method name (by default).

Uses the Strategy design pattern. A CacheManager implementation will perform the actual transaction management, and a CacheDefinitionSource is used for determining caching operation definitions.

A cache aspect is serializable if its CacheManager and CacheDefinitionSource are serializable.

Author:
Costin Leau

Nested Class Summary
protected  class CacheAspectSupport.CacheOperationContext
           
 
Field Summary
protected  Log logger
           
 
Constructor Summary
CacheAspectSupport()
           
 
Method Summary
 void afterPropertiesSet()
          Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
protected  Object execute(Callable<Object> invocation, Object target, Method method, Object[] args)
           
 CacheDefinitionSource getCacheDefinitionSource()
           
 CacheManager getCacheManager()
           
protected  Collection<Cache<?,?>> getCaches(CacheDefinition definition)
           
 KeyGenerator getKeyGenerator()
           
protected  CacheAspectSupport.CacheOperationContext getOperationContext(CacheDefinition definition, Method method, Object[] args, Class<?> targetClass)
           
protected  String methodIdentification(Method method, Class<?> targetClass)
          Convenience method to return a String representation of this Method for use in logging.
 void setCacheDefinitionSources(CacheDefinitionSource... cacheDefinitionSources)
          Set multiple cache definition sources which are used to find the cache attributes.
 void setCacheManager(CacheManager cacheManager)
           
<K> void
setKeyGenerator(KeyGenerator<K> keyGenerator)
           
 
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

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)

getCacheManager

public CacheManager getCacheManager()

setCacheManager

public void setCacheManager(CacheManager cacheManager)

getCacheDefinitionSource

public CacheDefinitionSource getCacheDefinitionSource()

getKeyGenerator

public KeyGenerator getKeyGenerator()

setKeyGenerator

public <K> void setKeyGenerator(KeyGenerator<K> keyGenerator)

setCacheDefinitionSources

public void setCacheDefinitionSources(CacheDefinitionSource... cacheDefinitionSources)
Set multiple cache definition sources which are used to find the cache attributes. Will build a CompositeCachingDefinitionSource for the given sources.


getCaches

protected Collection<Cache<?,?>> getCaches(CacheDefinition definition)

getOperationContext

protected CacheAspectSupport.CacheOperationContext getOperationContext(CacheDefinition definition,
                                                                       Method method,
                                                                       Object[] args,
                                                                       Class<?> targetClass)

execute

protected Object execute(Callable<Object> invocation,
                         Object target,
                         Method method,
                         Object[] args)
                  throws Exception
Throws:
Exception