Package org.springframework.cache.jcache.interceptor

# Class AnnotationJCacheOperationSource

java.lang.Object
org.springframework.cache.jcache.interceptor.AbstractFallbackJCacheOperationSource
org.springframework.cache.jcache.interceptor.AnnotationJCacheOperationSource

All Implemented Interfaces:
  `JCacheOperationSource`

Direct Known Subclasses:
  `DefaultJCacheOperationSource`

public abstract class AnnotationJCacheOperationSource extends AbstractFallbackJCacheOperationSource
Implementation of the `JCacheOperationSource` interface that reads the JSR-107 `CacheResult`, `CachePut`, `CacheRemove` and `CacheRemoveAll` annotations.

Since:
  4.1
Author:
  Stephane Nicoll, Juergen Hoeller

## Field Summary

### Fields inherited from class org.springframework.cache.jcache.interceptor.AbstractFallbackJCacheOperationSource

`logger`

## Constructor Summary

Constructors
Constructor
Description
`AnnotationJCacheOperationSource()`

## Method Summary

Modifier and Type
Method
Description
`protected org.springframework.cache.jcache.interceptor.CachePutOperation`
`createCachePutOperation(Method method, javax.cache.annotation.CacheDefaults defaults, javax.cache.annotation.CachePut ann)`
`protected org.springframework.cache.jcache.interceptor.CacheRemoveAllOperation`
`createCacheRemoveAllOperation(Method method, javax.cache.annotation.CacheDefaults defaults, javax.cache.annotation.CacheRemoveAll ann)`
`protected org.springframework.cache.jcache.interceptor.CacheRemoveOperation`
`createCacheRemoveOperation(Method method, javax.cache.annotation.CacheDefaults defaults, javax.cache.annotation.CacheRemove ann)`
`protected org.springframework.cache.jcache.interceptor.CacheResultOperation`
`createCacheResultOperation(Method method, javax.cache.annotation.CacheDefaults defaults, javax.cache.annotation.CacheResult ann)`
`protected String`
`determineCacheName(Method method, javax.cache.annotation.CacheDefaults defaults, String candidate)`
`protected javax.cache.annotation.CacheResolverFactory`
`determineCacheResolverFactory(javax.cache.annotation.CacheDefaults defaults, Class<? extends javax.cache.annotation.CacheResolverFactory> candidate)`
`protected org.springframework.cache.interceptor.KeyGenerator`
`determineKeyGenerator(javax.cache.annotation.CacheDefaults defaults, Class<? extends javax.cache.annotation.CacheKeyGenerator> candidate)`
`protected JCacheOperation<?>`
`findCacheOperation(Method method, Class<?> targetType)`
Subclasses need to implement this to return the caching operation for the given method, if any.
`protected String`
`generateDefaultCacheName(Method method)`
Generate a default cache name for the specified `Method`.
`protected abstract <T> T`
`getBean(Class<T> type)`
Locate or create an instance of the specified cache strategy `type`.
`protected javax.cache.annotation.CacheDefaults`
`getCacheDefaults(Method method, Class<?> targetType)`
`protected org.springframework.cache.interceptor.CacheResolver`
`getCacheResolver(javax.cache.annotation.CacheResolverFactory factory, javax.cache.annotation.CacheMethodDetails<?> details)`
`protected abstract org.springframework.cache.interceptor.CacheResolver`
`getDefaultCacheResolver()`
Return the default `CacheResolver` if none is set.
`protected abstract org.springframework.cache.interceptor.CacheResolver`
`getDefaultExceptionCacheResolver()`
Return the default exception `CacheResolver` if none is set.
`protected abstract org.springframework.cache.interceptor.KeyGenerator`
`getDefaultKeyGenerator()`
Return the default `KeyGenerator` if none is set.
`protected org.springframework.cache.interceptor.CacheResolver`
`getExceptionCacheResolver(javax.cache.annotation.CacheResolverFactory factory, javax.cache.annotation.CacheMethodDetails<javax.cache.annotation.CacheResult> details)`
`boolean`
`isCandidateClass(Class<?> targetClass)`
Determine whether the given class is a candidate for cache operations in the metadata format of this `JCacheOperationSource`.

### Methods inherited from class org.springframework.cache.jcache.interceptor.AbstractFallbackJCacheOperationSource

`allowPublicMethodsOnly, getCacheOperation, hasCacheOperation`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### AnnotationJCacheOperationSource

public AnnotationJCacheOperationSource()

## Method Details

### isCandidateClass

public boolean isCandidateClass(Class<?> targetClass)
Description copied from interface: `JCacheOperationSource`
Determine whether the given class is a candidate for cache operations in the metadata format of this `JCacheOperationSource`.

If this method returns `false`, the methods on the given class will not get traversed for `JCacheOperationSource.getCacheOperation(java.lang.reflect.Method, java.lang.Class<?>)` introspection. Returning `false` is therefore an optimization for non-affected classes, whereas `true` simply means that the class needs to get fully introspected for each method on the given class individually.

Parameters:
  `targetClass` - the class to introspect
Returns:
  `false` if the class is known to have no cache operation metadata at class or method level; `true` otherwise. The default implementation returns `true`, leading to regular introspection.
See Also:
  - `JCacheOperationSource.hasCacheOperation(java.lang.reflect.Method, java.lang.Class<?>)`

### findCacheOperation

@Nullable protected JCacheOperation<?> findCacheOperation(Method method, @Nullable Class<?> targetType)
Description copied from class: `AbstractFallbackJCacheOperationSource`
Subclasses need to implement this to return the caching operation for the given method, if any.

Specified by:
  `findCacheOperation` in class `AbstractFallbackJCacheOperationSource`
Parameters:
  `method` - the method to retrieve the operation for
  `targetType` - the target class
Returns:
  the cache operation associated with this method (or `null` if none)

### getCacheDefaults

@Nullable protected javax.cache.annotation.CacheDefaults getCacheDefaults(Method method, @Nullable Class<?> targetType)

### createCacheResultOperation

protected org.springframework.cache.jcache.interceptor.CacheResultOperation createCacheResultOperation(Method method, @Nullable javax.cache.annotation.CacheDefaults defaults, javax.cache.annotation.CacheResult ann)

### createCachePutOperation

protected org.springframework.cache.jcache.interceptor.CachePutOperation createCachePutOperation(Method method, @Nullable javax.cache.annotation.CacheDefaults defaults, javax.cache.annotation.CachePut ann)

### createCacheRemoveOperation

protected org.springframework.cache.jcache.interceptor.CacheRemoveOperation createCacheRemoveOperation(Method method, @Nullable javax.cache.annotation.CacheDefaults defaults, javax.cache.annotation.CacheRemove ann)

### createCacheRemoveAllOperation

protected org.springframework.cache.jcache.interceptor.CacheRemoveAllOperation createCacheRemoveAllOperation(Method method, @Nullable javax.cache.annotation.CacheDefaults defaults, javax.cache.annotation.CacheRemoveAll ann)

### getCacheResolver

protected org.springframework.cache.interceptor.CacheResolver getCacheResolver(@Nullable javax.cache.annotation.CacheResolverFactory factory, javax.cache.annotation.CacheMethodDetails<?> details)

### getExceptionCacheResolver

protected org.springframework.cache.interceptor.CacheResolver getExceptionCacheResolver(@Nullable javax.cache.annotation.CacheResolverFactory factory, javax.cache.annotation.CacheMethodDetails<javax.cache.annotation.CacheResult> details)

### determineCacheResolverFactory

@Nullable protected javax.cache.annotation.CacheResolverFactory determineCacheResolverFactory(@Nullable javax.cache.annotation.CacheDefaults defaults, Class<? extends javax.cache.annotation.CacheResolverFactory> candidate)

### determineKeyGenerator

protected org.springframework.cache.interceptor.KeyGenerator determineKeyGenerator(@Nullable javax.cache.annotation.CacheDefaults defaults, Class<? extends javax.cache.annotation.CacheKeyGenerator> candidate)

### determineCacheName

protected String determineCacheName(Method method, @Nullable javax.cache.annotation.CacheDefaults defaults, String candidate)

### generateDefaultCacheName

protected String generateDefaultCacheName(Method method)
Generate a default cache name for the specified `Method`.

Parameters:
  `method` - the annotated method
Returns:
  the default cache name, according to JSR-107

### getBean

protected abstract <T> T getBean(Class<T> type)
Locate or create an instance of the specified cache strategy `type`.

Parameters:
  `type` - the type of the bean to manage
Returns:
  the required bean

### getDefaultCacheResolver

protected abstract org.springframework.cache.interceptor.CacheResolver getDefaultCacheResolver()
Return the default `CacheResolver` if none is set.

### getDefaultExceptionCacheResolver

protected abstract org.springframework.cache.interceptor.CacheResolver getDefaultExceptionCacheResolver()
Return the default exception `CacheResolver` if none is set.

### getDefaultKeyGenerator

protected abstract org.springframework.cache.interceptor.KeyGenerator getDefaultKeyGenerator()
Return the default `KeyGenerator` if none is set.