Class AbstractFallbackCacheOperationSource
java.lang.Object
org.springframework.cache.interceptor.AbstractFallbackCacheOperationSource
- All Implemented Interfaces:
CacheOperationSource
- Direct Known Subclasses:
AnnotationCacheOperationSource
public abstract class AbstractFallbackCacheOperationSource
extends Object
implements CacheOperationSource
Abstract implementation of
CacheOperationSource
that caches operations
for methods and implements a fallback policy: 1. specific target method;
2. target class; 3. declaring method; 4. declaring class/interface.
Defaults to using the target class's declared cache operations if none are associated with the target method. Any cache operations associated with the target method completely override any class-level declarations. If none found on the target class, the interface that the invoked method has been called through (in case of a JDK proxy) will be checked.
- Since:
- 3.1
- Author:
- Costin Leau, Juergen Hoeller
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final org.apache.commons.logging.Log
Logger available to subclasses. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
Should only public methods be allowed to have caching semantics?protected abstract @Nullable Collection
<CacheOperation> findCacheOperations
(Class<?> clazz) Subclasses need to implement this to return the cache operations for the given class, if any.protected abstract @Nullable Collection
<CacheOperation> findCacheOperations
(Method method) Subclasses need to implement this to return the cache operations for the given method, if any.protected Object
getCacheKey
(Method method, @Nullable Class<?> targetClass) Determine a cache key for the given method and target class.getCacheOperations
(Method method, @Nullable Class<?> targetClass) Return the collection of cache operations for this method, ornull
if the method contains no cacheable annotations.boolean
hasCacheOperations
(Method method, @Nullable Class<?> targetClass) Determine whether there are cache operations for the given method.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface CacheOperationSource
isCandidateClass
-
Field Details
-
logger
protected final org.apache.commons.logging.Log loggerLogger available to subclasses.As this base class is not marked Serializable, the logger will be recreated after serialization - provided that the concrete subclass is Serializable.
-
-
Constructor Details
-
AbstractFallbackCacheOperationSource
public AbstractFallbackCacheOperationSource()
-
-
Method Details
-
hasCacheOperations
Description copied from interface:CacheOperationSource
Determine whether there are cache operations for the given method.- Specified by:
hasCacheOperations
in interfaceCacheOperationSource
- Parameters:
method
- the method to introspecttargetClass
- the target class (can benull
, in which case the declaring class of the method must be used)- See Also:
-
getCacheOperations
public @Nullable Collection<CacheOperation> getCacheOperations(Method method, @Nullable Class<?> targetClass) Description copied from interface:CacheOperationSource
Return the collection of cache operations for this method, ornull
if the method contains no cacheable annotations.- Specified by:
getCacheOperations
in interfaceCacheOperationSource
- Parameters:
method
- the method to introspecttargetClass
- the target class (can benull
, in which case the declaring class of the method must be used)- Returns:
- all cache operations for this method, or
null
if none found
-
getCacheKey
Determine a cache key for the given method and target class.Must not produce same key for overloaded methods. Must produce same key for different instances of the same method.
- Parameters:
method
- the method (nevernull
)targetClass
- the target class (may benull
)- Returns:
- the cache key (never
null
)
-
findCacheOperations
Subclasses need to implement this to return the cache operations for the given class, if any.- Parameters:
clazz
- the class to retrieve the cache operations for- Returns:
- all cache operations associated with this class, or
null
if none
-
findCacheOperations
Subclasses need to implement this to return the cache operations for the given method, if any.- Parameters:
method
- the method to retrieve the cache operations for- Returns:
- all cache operations associated with this method, or
null
if none
-
allowPublicMethodsOnly
protected boolean allowPublicMethodsOnly()Should only public methods be allowed to have caching semantics?The default implementation returns
false
.
-