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 annotation format.

This class reads Spring's Cacheable, CachePut 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.

Since:
3.1
Author:
Costin Leau, Juergen Hoeller
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 default AnnotationCacheOperationSource, supporting public methods that carry the Cacheable and CacheEvict annotations.
AnnotationCacheOperationSource(CacheAnnotationParser... annotationParsers)
          Create a custom AnnotationCacheOperationSource.
AnnotationCacheOperationSource(CacheAnnotationParser annotationParser)
          Create a custom AnnotationCacheOperationSource.
AnnotationCacheOperationSource(Set<CacheAnnotationParser> annotationParsers)
          Create a custom AnnotationCacheOperationSource.
 
Method Summary
protected  boolean allowPublicMethodsOnly()
          By default, only public methods can be made cacheable.
protected  Collection<CacheOperation> determineCacheOperations(AnnotatedElement ae)
          Determine the cache operation(s) for the given method or class.
 boolean equals(Object other)
           
protected  Collection<CacheOperation> findCacheOperations(Class<?> clazz)
          Subclasses need to implement this to return the caching attribute for the given class, if any.
protected  Collection<CacheOperation> findCacheOperations(Method method)
          Subclasses need to implement this to return the caching attribute for the given method, if any.
 int hashCode()
           
 
Methods inherited from class org.springframework.cache.interceptor.AbstractFallbackCacheOperationSource
getCacheKey, getCacheOperations
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, 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 default 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 annotationParser)
Create a custom AnnotationCacheOperationSource.

Parameters:
annotationParser - the CacheAnnotationParser to use

AnnotationCacheOperationSource

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

Parameters:
annotationParsers - the CacheAnnotationParser to use

AnnotationCacheOperationSource

public AnnotationCacheOperationSource(Set<CacheAnnotationParser> annotationParsers)
Create a custom AnnotationCacheOperationSource.

Parameters:
annotationParsers - the CacheAnnotationParser to use
Method Detail

findCacheOperations

protected Collection<CacheOperation> findCacheOperations(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:
findCacheOperations in class AbstractFallbackCacheOperationSource
Parameters:
clazz - the class to retrieve the attribute for
Returns:
all caching attribute associated with this class (or null if none)

findCacheOperations

protected Collection<CacheOperation> findCacheOperations(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:
findCacheOperations in class AbstractFallbackCacheOperationSource
Parameters:
method - the method to retrieve the attribute for
Returns:
all caching attribute associated with this method (or null if none)

determineCacheOperations

protected Collection<CacheOperation> determineCacheOperations(AnnotatedElement ae)
Determine the cache operation(s) for the given method or class.

This implementation delegates to configured CacheAnnotationParsers for parsing known annotations into Spring's metadata attribute class.

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

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

allowPublicMethodsOnly

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

Overrides:
allowPublicMethodsOnly in class AbstractFallbackCacheOperationSource

equals

public boolean equals(Object other)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object