Class AbstractFallbackTransactionAttributeSource
java.lang.Object
org.springframework.transaction.interceptor.AbstractFallbackTransactionAttributeSource
- All Implemented Interfaces:
- Aware, EmbeddedValueResolverAware, TransactionAttributeSource
- Direct Known Subclasses:
- AnnotationTransactionAttributeSource
public abstract class AbstractFallbackTransactionAttributeSource
extends Object
implements TransactionAttributeSource, EmbeddedValueResolverAware
Abstract implementation of 
TransactionAttributeSource that caches
attributes 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 transaction attribute if none is associated with the target method. Any transaction attribute associated with the target method completely overrides a class transaction attribute. 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:
- 1.1
- Author:
- Rod Johnson, Juergen Hoeller
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected final org.apache.commons.logging.LogLogger available to subclasses.
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionprotected booleanShould only public methods be allowed to have transactional semantics?protected @Nullable TransactionAttributecomputeTransactionAttribute(Method method, @Nullable Class<?> targetClass) Same signature asgetTransactionAttribute(Method, Class), but doesn't cache the result.protected abstract @Nullable TransactionAttributefindTransactionAttribute(Class<?> clazz) Subclasses need to implement this to return the transaction attribute for the given class, if any.protected abstract @Nullable TransactionAttributefindTransactionAttribute(Method method) Subclasses need to implement this to return the transaction attribute for the given method, if any.protected ObjectgetCacheKey(Method method, @Nullable Class<?> targetClass) Determine a cache key for the given method and target class.getTransactionAttribute(Method method, @Nullable Class<?> targetClass) Return the transaction attribute for the given method, ornullif the method is non-transactional.booleanhasTransactionAttribute(Method method, @Nullable Class<?> targetClass) Determine whether there is a transaction attribute for the given method.voidsetEmbeddedValueResolver(StringValueResolver resolver) Set the StringValueResolver to use for resolving embedded definition values.Methods inherited from class Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface TransactionAttributeSourceisCandidateClass
- 
Field Details- 
loggerprotected 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- 
AbstractFallbackTransactionAttributeSourcepublic AbstractFallbackTransactionAttributeSource()
 
- 
- 
Method Details- 
setEmbeddedValueResolverDescription copied from interface:EmbeddedValueResolverAwareSet the StringValueResolver to use for resolving embedded definition values.- Specified by:
- setEmbeddedValueResolverin interface- EmbeddedValueResolverAware
 
- 
hasTransactionAttributeDescription copied from interface:TransactionAttributeSourceDetermine whether there is a transaction attribute for the given method.- Specified by:
- hasTransactionAttributein interface- TransactionAttributeSource
- Parameters:
- method- the method to introspect
- targetClass- the target class (can be- null, in which case the declaring class of the method must be used)
- See Also:
 
- 
getTransactionAttributepublic @Nullable TransactionAttribute getTransactionAttribute(Method method, @Nullable Class<?> targetClass) Description copied from interface:TransactionAttributeSourceReturn the transaction attribute for the given method, ornullif the method is non-transactional.- Specified by:
- getTransactionAttributein interface- TransactionAttributeSource
- Parameters:
- method- the method to introspect
- targetClass- the target class (can be- null, in which case the declaring class of the method must be used)
- Returns:
- the matching transaction attribute, or nullif none found
 
- 
getCacheKeyDetermine 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 (never- null)
- targetClass- the target class (may be- null)
- Returns:
- the cache key (never null)
 
- 
computeTransactionAttributeprotected @Nullable TransactionAttribute computeTransactionAttribute(Method method, @Nullable Class<?> targetClass) Same signature asgetTransactionAttribute(Method, Class), but doesn't cache the result.getTransactionAttribute(Method, Class)is effectively a caching decorator for this method.As of 4.1.8, this method can be overridden. - Since:
- 4.1.8
- See Also:
 
- 
findTransactionAttributeSubclasses need to implement this to return the transaction attribute for the given class, if any.- Parameters:
- clazz- the class to retrieve the attribute for
- Returns:
- all transaction attribute associated with this class, or nullif none
 
- 
findTransactionAttributeSubclasses need to implement this to return the transaction attribute for the given method, if any.- Parameters:
- method- the method to retrieve the attribute for
- Returns:
- all transaction attribute associated with this method, or nullif none
 
- 
allowPublicMethodsOnlyprotected boolean allowPublicMethodsOnly()Should only public methods be allowed to have transactional semantics?The default implementation returns false.
 
-