Class AnnotationTransactionAttributeSource
- All Implemented Interfaces:
Serializable, Aware, EmbeddedValueResolverAware, TransactionAttributeSource
TransactionAttributeSource
interface for working with transaction metadata from annotations.
This class reads Spring's @Transactional annotation and
exposes corresponding transaction attributes to Spring's transaction infrastructure.
Also supports JTA's Transactional and EJB's
TransactionAttribute annotation (if present).
This class may also serve as base class for a custom TransactionAttributeSource,
or get customized through TransactionAnnotationParser strategies.
- Since:
- 1.2
- Author:
- Colin Sampaleanu, Juergen Hoeller
- See Also:
-
Field Summary
Fields inherited from class AbstractFallbackTransactionAttributeSource
logger -
Constructor Summary
ConstructorsConstructorDescriptionCreate a default AnnotationTransactionAttributeSource, supporting public methods that carry theTransactionalannotation or the EJB3TransactionAttributeannotation.AnnotationTransactionAttributeSource(boolean publicMethodsOnly) Create a custom AnnotationTransactionAttributeSource, supporting public methods that carry theTransactionalannotation or the EJB3TransactionAttributeannotation.AnnotationTransactionAttributeSource(TransactionAnnotationParser annotationParser) Create a custom AnnotationTransactionAttributeSource.AnnotationTransactionAttributeSource(TransactionAnnotationParser... annotationParsers) Create a custom AnnotationTransactionAttributeSource. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddDefaultRollbackRule(RollbackRuleAttribute rollbackRule) Add a default rollback rule, to be applied to all rule-based transaction attributes returned by this source.protected booleanBy default, only public methods can be made transactional.protected @Nullable TransactionAttributeDetermine the transaction attribute for the given method or class.booleanprotected @Nullable TransactionAttributefindTransactionAttribute(Class<?> clazz) Subclasses need to implement this to return the transaction attribute for the given class, if any.protected @Nullable TransactionAttributefindTransactionAttribute(Method method) Subclasses need to implement this to return the transaction attribute for the given method, if any.inthashCode()booleanisCandidateClass(Class<?> targetClass) Determine whether the given class is a candidate for transaction attributes in the metadata format of thisTransactionAttributeSource.voidsetPublicMethodsOnly(boolean publicMethodsOnly) Set whether transactional methods are expected to be public.Methods inherited from class AbstractFallbackTransactionAttributeSource
computeTransactionAttribute, getCacheKey, getTransactionAttribute, hasTransactionAttribute, setEmbeddedValueResolver
-
Constructor Details
-
AnnotationTransactionAttributeSource
public AnnotationTransactionAttributeSource()Create a default AnnotationTransactionAttributeSource, supporting public methods that carry theTransactionalannotation or the EJB3TransactionAttributeannotation. -
AnnotationTransactionAttributeSource
public AnnotationTransactionAttributeSource(boolean publicMethodsOnly) Create a custom AnnotationTransactionAttributeSource, supporting public methods that carry theTransactionalannotation or the EJB3TransactionAttributeannotation.- Parameters:
publicMethodsOnly- whether to support public methods that carry theTransactionalannotation only (typically for use with proxy-based AOP), or protected/private methods as well (typically used with AspectJ class weaving)- See Also:
-
AnnotationTransactionAttributeSource
Create a custom AnnotationTransactionAttributeSource.- Parameters:
annotationParser- the TransactionAnnotationParser to use
-
AnnotationTransactionAttributeSource
Create a custom AnnotationTransactionAttributeSource.- Parameters:
annotationParsers- the TransactionAnnotationParsers to use
-
-
Method Details
-
setPublicMethodsOnly
public void setPublicMethodsOnly(boolean publicMethodsOnly) Set whether transactional methods are expected to be public.The default is
true.- Since:
- 6.2
- See Also:
-
addDefaultRollbackRule
Add a default rollback rule, to be applied to all rule-based transaction attributes returned by this source.By default, a rollback will be triggered on unchecked exceptions but not on checked exceptions. A default rule may override this while still respecting any custom rules in the transaction attribute.
- Parameters:
rollbackRule- a rollback rule overriding the default behavior, for example,RollbackRuleAttribute.ROLLBACK_ON_ALL_EXCEPTIONS- Since:
- 6.2
- See Also:
-
isCandidateClass
Description copied from interface:TransactionAttributeSourceDetermine whether the given class is a candidate for transaction attributes in the metadata format of thisTransactionAttributeSource.If this method returns
false, the methods on the given class will not get traversed forTransactionAttributeSource.getTransactionAttribute(Method, Class)introspection. Returningfalseis therefore an optimization for non-affected classes, whereastruesimply means that the class needs to get fully introspected for each method on the given class individually.- Specified by:
isCandidateClassin interfaceTransactionAttributeSource- Parameters:
targetClass- the class to introspect- Returns:
falseif the class is known to have no transaction attributes at class or method level;trueotherwise. The default implementation returnstrue, leading to regular introspection.- See Also:
-
findTransactionAttribute
Description copied from class:AbstractFallbackTransactionAttributeSourceSubclasses need to implement this to return the transaction attribute for the given class, if any.- Specified by:
findTransactionAttributein classAbstractFallbackTransactionAttributeSource- Parameters:
clazz- the class to retrieve the attribute for- Returns:
- all transaction attribute associated with this class, or
nullif none
-
findTransactionAttribute
Description copied from class:AbstractFallbackTransactionAttributeSourceSubclasses need to implement this to return the transaction attribute for the given method, if any.- Specified by:
findTransactionAttributein classAbstractFallbackTransactionAttributeSource- Parameters:
method- the method to retrieve the attribute for- Returns:
- all transaction attribute associated with this method, or
nullif none
-
determineTransactionAttribute
Determine the transaction attribute for the given method or class.This implementation delegates to configured
TransactionAnnotationParsersfor parsing known annotations into Spring's metadata attribute class. Returnsnullif it's not transactional.Can be overridden to support custom annotations that carry transaction metadata.
- Parameters:
element- the annotated method or class- Returns:
- the configured transaction attribute, or
nullif none was found
-
allowPublicMethodsOnly
protected boolean allowPublicMethodsOnly()By default, only public methods can be made transactional.- Overrides:
allowPublicMethodsOnlyin classAbstractFallbackTransactionAttributeSource- See Also:
-
equals
-
hashCode
-