Class AbstractFallbackTransactionAttributeSource
- All Implemented Interfaces:
- Aware,- EmbeddedValueResolverAware,- TransactionAttributeSource
- Direct Known Subclasses:
- AnnotationTransactionAttributeSource
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 SummaryFields
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionprotected booleanShould only public methods be allowed to have transactional semantics?protected TransactionAttributecomputeTransactionAttribute(Method method, Class<?> targetClass) Same signature asgetTransactionAttribute(java.lang.reflect.Method, java.lang.Class<?>), but doesn't cache the result.protected abstract TransactionAttributefindTransactionAttribute(Class<?> clazz) Subclasses need to implement this to return the transaction attribute for the given class, if any.protected abstract TransactionAttributefindTransactionAttribute(Method method) Subclasses need to implement this to return the transaction attribute for the given method, if any.protected ObjectgetCacheKey(Method method, Class<?> targetClass) Determine a cache key for the given method and target class.getTransactionAttribute(Method method, Class<?> targetClass) Determine the transaction attribute for this method invocation.voidsetEmbeddedValueResolver(StringValueResolver resolver) Set the StringValueResolver to use for resolving embedded definition values.Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.transaction.interceptor.TransactionAttributeSourceisCandidateClass
- 
Field Details- 
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
 
- 
getTransactionAttribute@Nullable public TransactionAttribute getTransactionAttribute(Method method, @Nullable Class<?> targetClass) Determine the transaction attribute for this method invocation.Defaults to the class's transaction attribute if no method attribute is found. - Specified by:
- getTransactionAttributein interface- TransactionAttributeSource
- Parameters:
- method- the method for the current invocation (never- null)
- targetClass- the target class for this invocation (can be- null)
- Returns:
- a TransactionAttribute for this method, or nullif the method is not transactional
 
- 
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)
 
- 
computeTransactionAttribute@Nullable protected TransactionAttribute computeTransactionAttribute(Method method, @Nullable Class<?> targetClass) Same signature asgetTransactionAttribute(java.lang.reflect.Method, java.lang.Class<?>), but doesn't cache the result.getTransactionAttribute(java.lang.reflect.Method, java.lang.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.
 
-