org.springframework.transaction.interceptor

## Class TransactionInterceptor

- java.lang.Object
- - org.springframework.transaction.interceptor.TransactionAspectSupport
  - - org.springframework.transaction.interceptor.TransactionInterceptor

- All Implemented Interfaces:
    Serializable, Advice, Interceptor, MethodInterceptor, Aware, BeanFactoryAware, InitializingBean

      public class TransactionInterceptor
      extends TransactionAspectSupport
      implements MethodInterceptor, Serializable

  AOP Alliance MethodInterceptor for declarative transaction management using the common Spring transaction infrastructure (`PlatformTransactionManager`/ `ReactiveTransactionManager`).

  Derives from the `TransactionAspectSupport` class which contains the integration with Spring's underlying transaction API. TransactionInterceptor simply calls the relevant superclass methods such as `TransactionAspectSupport.invokeWithinTransaction(java.lang.reflect.Method, java.lang.Class<?>, org.springframework.transaction.interceptor.TransactionAspectSupport.InvocationCallback)` in the correct order.

  TransactionInterceptors are thread-safe.

  Author:
    Rod Johnson, Juergen Hoeller, Sebastien Deleuze
  See Also:
    `TransactionProxyFactoryBean`, `ProxyFactoryBean`, `ProxyFactory`, Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.springframework.transaction.interceptor.TransactionAspectSupport

      `TransactionAspectSupport.CoroutinesInvocationCallback, TransactionAspectSupport.InvocationCallback, TransactionAspectSupport.TransactionInfo`

  - ### Field Summary

    - ### Fields inherited from class org.springframework.transaction.interceptor.TransactionAspectSupport

      `logger`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TransactionInterceptor()` Create a new TransactionInterceptor.
    `TransactionInterceptor(PlatformTransactionManager ptm, Properties attributes)` Deprecated. as of 5.2.5, in favor of `TransactionAspectSupport.setTransactionAttributes(Properties)`
    `TransactionInterceptor(PlatformTransactionManager ptm, TransactionAttributeSource tas)` Deprecated. as of 5.2.5, in favor of `TransactionInterceptor(TransactionManager, TransactionAttributeSource)`
    `TransactionInterceptor(TransactionManager ptm, TransactionAttributeSource tas)` Create a new TransactionInterceptor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `invoke(MethodInvocation invocation)` Implement this method to perform extra treatments before and after the invocation.

    - ### Methods inherited from class org.springframework.transaction.interceptor.TransactionAspectSupport

      `afterPropertiesSet, cleanupTransactionInfo, clearTransactionManagerCache, commitTransactionAfterReturning, completeTransactionAfterThrowing, createTransactionIfNecessary, currentTransactionInfo, currentTransactionStatus, determineTransactionManager, getBeanFactory, getTransactionAttributeSource, getTransactionManager, getTransactionManagerBeanName, invokeWithinTransaction, methodIdentification, prepareTransactionInfo, setBeanFactory, setTransactionAttributes, setTransactionAttributeSource, setTransactionAttributeSources, setTransactionManager, setTransactionManagerBeanName`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### TransactionInterceptor

          public TransactionInterceptor()

      Create a new TransactionInterceptor.

      Transaction manager and transaction attributes still need to be set.

      See Also:
        `TransactionAspectSupport.setTransactionManager(org.springframework.transaction.TransactionManager)`, `TransactionAspectSupport.setTransactionAttributes(java.util.Properties)`, `TransactionAspectSupport.setTransactionAttributeSource(TransactionAttributeSource)`

    - #### TransactionInterceptor

          public TransactionInterceptor(TransactionManager ptm,
                                        TransactionAttributeSource tas)

      Create a new TransactionInterceptor.
      Parameters:
        `ptm` - the default transaction manager to perform the actual transaction management
        `tas` - the attribute source to be used to find transaction attributes
      Since:
        5.2.5
      See Also:
        `TransactionAspectSupport.setTransactionManager(org.springframework.transaction.TransactionManager)`, `TransactionAspectSupport.setTransactionAttributeSource(org.springframework.transaction.interceptor.TransactionAttributeSource)`

    - #### TransactionInterceptor

          @Deprecated
          public TransactionInterceptor(PlatformTransactionManager ptm,
                                                    TransactionAttributeSource tas)

      Deprecated. as of 5.2.5, in favor of `TransactionInterceptor(TransactionManager, TransactionAttributeSource)`
      Create a new TransactionInterceptor.
      Parameters:
        `ptm` - the default transaction manager to perform the actual transaction management
        `tas` - the attribute source to be used to find transaction attributes
      See Also:
        `TransactionAspectSupport.setTransactionManager(org.springframework.transaction.TransactionManager)`, `TransactionAspectSupport.setTransactionAttributeSource(org.springframework.transaction.interceptor.TransactionAttributeSource)`

    - #### TransactionInterceptor

          @Deprecated
          public TransactionInterceptor(PlatformTransactionManager ptm,
                                                    Properties attributes)

      Deprecated. as of 5.2.5, in favor of `TransactionAspectSupport.setTransactionAttributes(Properties)`
      Create a new TransactionInterceptor.
      Parameters:
        `ptm` - the default transaction manager to perform the actual transaction management
        `attributes` - the transaction attributes in properties format
      See Also:
        `TransactionAspectSupport.setTransactionManager(org.springframework.transaction.TransactionManager)`, `TransactionAspectSupport.setTransactionAttributes(java.util.Properties)`

  - ### Method Detail

    - #### invoke

          @Nullable
          public Object invoke(MethodInvocation invocation)
                                  throws Throwable

      Description copied from interface: `MethodInterceptor`
      Implement this method to perform extra treatments before and after the invocation. Polite implementations would certainly like to invoke `Joinpoint.proceed()`.
      Specified by:
        `invoke` in interface `MethodInterceptor`
      Parameters:
        `invocation` - the method invocation joinpoint
      Returns:
        the result of the call to `Joinpoint.proceed()`; might be intercepted by the interceptor
      Throws:
        `Throwable` - if the interceptors or the target object throws an exception