org.springframework.transaction.annotation

## Interface TransactionAnnotationParser

- All Known Implementing Classes:
    Ejb3TransactionAnnotationParser, JtaTransactionAnnotationParser, SpringTransactionAnnotationParser

      public interface TransactionAnnotationParser

  Strategy interface for parsing known transaction annotation types. `AnnotationTransactionAttributeSource` delegates to such parsers for supporting specific annotation types such as Spring's own `Transactional`, JTA 1.2's `Transactional` or EJB3's `TransactionAttribute`.
  Since:
    2.5
  Author:
    Juergen Hoeller
  See Also:
    `AnnotationTransactionAttributeSource`, `SpringTransactionAnnotationParser`, `Ejb3TransactionAnnotationParser`, `JtaTransactionAnnotationParser`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `default boolean` | `isCandidateClass(Class<?> targetClass)` Determine whether the given class is a candidate for transaction attributes in the annotation format of this `TransactionAnnotationParser`.
    `TransactionAttribute` | `parseTransactionAnnotation(AnnotatedElement element)` Parse the transaction attribute for the given method or class, based on an annotation type understood by this parser.

- - ### Method Detail

    - #### isCandidateClass

          default boolean isCandidateClass(Class<?> targetClass)

      Determine whether the given class is a candidate for transaction attributes in the annotation format of this `TransactionAnnotationParser`.

      If this method returns `false`, the methods on the given class will not get traversed for `#parseTransactionAnnotation` 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 transaction annotations at class or method level; `true` otherwise. The default implementation returns `true`, leading to regular introspection.
      Since:
        5.2

    - #### parseTransactionAnnotation

          @Nullable
          TransactionAttribute parseTransactionAnnotation(AnnotatedElement element)

      Parse the transaction attribute for the given method or class, based on an annotation type understood by this parser.

      This essentially parses a known transaction annotation into Spring's metadata attribute class. Returns `null` if the method/class is not transactional.

      Parameters:
        `element` - the annotated method or class
      Returns:
        the configured transaction attribute, or `null` if none found
      See Also:
        `AnnotationTransactionAttributeSource.determineTransactionAttribute(java.lang.reflect.AnnotatedElement)`