## org.springframework.cache.annotation
Class AnnotationCacheOperationSource

    java.lang.Object
      org.springframework.cache.interceptor.AbstractFallbackCacheOperationSource
          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 `CacheAnnotationParser`s 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`