org.springframework.cache.annotation
Class AnnotationCacheOperationSource

java.lang.Object
  extended by org.springframework.cache.interceptor.AbstractFallbackCacheOperationSource
      extended by org.springframework.cache.annotation.AnnotationCacheOperationSource
All Implemented Interfaces:
Serializable, CacheOperationSource

public class AnnotationCacheOperationSource
extends AbstractFallbackCacheOperationSource
implements Serializable

Implementation of the CacheOperationSource interface for working with caching metadata in JDK 1.5+ annotation format.

This class reads Spring's JDK 1.5+ Cacheable and CacheEvict annotations and exposes corresponding caching operation definition to Spring's cache infrastructure. This class may also serve as base class for a custom CacheOperationSource.

Author:
Costin Leau
See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.springframework.cache.interceptor.AbstractFallbackCacheOperationSource
logger
 
Constructor Summary
AnnotationCacheOperationSource()
          Create a default AnnotationCacheOperationSource, supporting public methods that carry the Cacheable and CacheEvict annotations.
AnnotationCacheOperationSource(boolean publicMethodsOnly)
          Create a custom AnnotationCacheOperationSource, supporting public methods that carry the Cacheable and CacheEvict annotations.
AnnotationCacheOperationSource(CacheAnnotationParser... annotationParsers)
          Create a custom AnnotationCacheOperationSource.
 
Method Summary
protected  boolean allowPublicMethodsOnly()
          By default, only public methods can be made cacheable.
protected  CacheOperation determineCacheOperation(AnnotatedElement ae)
          Determine the cache operation definition for the given method or class.
protected  CacheOperation findCacheOperation(Class<?> clazz)
          Subclasses need to implement this to return the caching attribute for the given class, if any.
protected  CacheOperation findCacheOperation(Method method)
          Subclasses need to implement this to return the caching attribute for the given method, if any.
 
Methods inherited from class org.springframework.cache.interceptor.AbstractFallbackCacheOperationSource
getCacheKey, getCacheOperation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AnnotationCacheOperationSource

public AnnotationCacheOperationSource()
Create a default AnnotationCacheOperationSource, supporting public methods that carry the Cacheable and CacheEvict annotations.


AnnotationCacheOperationSource

public AnnotationCacheOperationSource(boolean publicMethodsOnly)
Create a custom AnnotationCacheOperationSource, supporting public methods that carry the Cacheable and CacheEvict annotations.

Parameters:
publicMethodsOnly - whether to support only annotated public methods typically for use with proxy-based AOP), or protected/private methods as well (typically used with AspectJ class weaving)

AnnotationCacheOperationSource

public AnnotationCacheOperationSource(CacheAnnotationParser... annotationParsers)
Create a custom AnnotationCacheOperationSource.

Parameters:
annotationParsers - the CacheAnnotationParser to use
Method Detail

findCacheOperation

protected CacheOperation findCacheOperation(Class<?> clazz)
Description copied from class: AbstractFallbackCacheOperationSource
Subclasses need to implement this to return the caching attribute for the given class, if any.

Specified by:
findCacheOperation in class AbstractFallbackCacheOperationSource
Parameters:
clazz - the class to retrieve the attribute for
Returns:
all caching attribute associated with this class (or null if none)

findCacheOperation

protected CacheOperation findCacheOperation(Method method)
Description copied from class: AbstractFallbackCacheOperationSource
Subclasses need to implement this to return the caching attribute for the given method, if any.

Specified by:
findCacheOperation in class AbstractFallbackCacheOperationSource
Parameters:
method - the method to retrieve the attribute for
Returns:
all caching attribute associated with this method (or null if none)

determineCacheOperation

protected CacheOperation determineCacheOperation(AnnotatedElement ae)
Determine the cache operation definition for the given method or class.

This implementation delegates to configured CacheAnnotationParsers for parsing known annotations into Spring's metadata attribute class. Returns null if it's not cacheable.

Can be overridden to support custom annotations that carry caching metadata.

Parameters:
ae - the annotated method or class
Returns:
CacheOperation the configured caching operation, or null if none was found

allowPublicMethodsOnly

protected boolean allowPublicMethodsOnly()
By default, only public methods can be made cacheable.

Overrides:
allowPublicMethodsOnly in class AbstractFallbackCacheOperationSource