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

    Constructors
    Constructor and Description
    `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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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`