org.springframework.aop.aspectj

## Class AspectJAroundAdvice

- java.lang.Object
- - org.springframework.aop.aspectj.AbstractAspectJAdvice
  - - org.springframework.aop.aspectj.AspectJAroundAdvice

- All Implemented Interfaces:
    Serializable, Advice, Interceptor, MethodInterceptor, AspectJPrecedenceInformation, Ordered

      public class AspectJAroundAdvice
      extends AbstractAspectJAdvice
      implements MethodInterceptor, Serializable

  Spring AOP around advice (MethodInterceptor) that wraps an AspectJ advice method. Exposes ProceedingJoinPoint.
  Since:
    2.0
  Author:
    Rod Johnson, Juergen Hoeller
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class org.springframework.aop.aspectj.AbstractAspectJAdvice

      `aspectJAdviceMethod, JOIN_POINT_KEY`

    - ### Fields inherited from interface org.springframework.core.Ordered

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AspectJAroundAdvice(Method aspectJAroundAdviceMethod, AspectJExpressionPointcut pointcut, AspectInstanceFactory aif)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `invoke(MethodInvocation mi)` Implement this method to perform extra treatments before and after the invocation.
    `boolean` | `isAfterAdvice()` Return whether this is an after advice.
    `boolean` | `isBeforeAdvice()` Return whether this is a before advice.
    `protected org.aspectj.lang.ProceedingJoinPoint` | `lazyGetProceedingJoinPoint(ProxyMethodInvocation rmi)` Return the ProceedingJoinPoint for the current invocation, instantiating it lazily if it hasn't been bound to the thread already.
    `protected boolean` | `supportsProceedingJoinPoint()`

    - ### Methods inherited from class org.springframework.aop.aspectj.AbstractAspectJAdvice

      `argBinding, buildSafePointcut, calculateArgumentBindings, createParameterNameDiscoverer, currentJoinPoint, getAspectClassLoader, getAspectInstanceFactory, getAspectJAdviceMethod, getAspectName, getDeclarationOrder, getDiscoveredReturningGenericType, getDiscoveredReturningType, getDiscoveredThrowingType, getJoinPoint, getJoinPointMatch, getJoinPointMatch, getOrder, getPointcut, invokeAdviceMethod, invokeAdviceMethod, invokeAdviceMethodWithGivenArgs, setArgumentNames, setArgumentNamesFromStringArray, setAspectName, setDeclarationOrder, setReturningName, setReturningNameNoCheck, setThrowingName, setThrowingNameNoCheck, toString`

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

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

- - ### Constructor Detail

    - #### AspectJAroundAdvice

          public AspectJAroundAdvice(Method aspectJAroundAdviceMethod,
                                     AspectJExpressionPointcut pointcut,
                                     AspectInstanceFactory aif)

  - ### Method Detail

    - #### isBeforeAdvice

          public boolean isBeforeAdvice()

      Description copied from interface: `AspectJPrecedenceInformation`
      Return whether this is a before advice.
      Specified by:
        `isBeforeAdvice` in interface `AspectJPrecedenceInformation`

    - #### isAfterAdvice

          public boolean isAfterAdvice()

      Description copied from interface: `AspectJPrecedenceInformation`
      Return whether this is an after advice.
      Specified by:
        `isAfterAdvice` in interface `AspectJPrecedenceInformation`

    - #### supportsProceedingJoinPoint

          protected boolean supportsProceedingJoinPoint()

      Overrides:
        `supportsProceedingJoinPoint` in class `AbstractAspectJAdvice`

    - #### invoke

          @Nullable
          public Object invoke(MethodInvocation mi)
                                  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:
        `mi` - 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

    - #### lazyGetProceedingJoinPoint

          protected org.aspectj.lang.ProceedingJoinPoint lazyGetProceedingJoinPoint(ProxyMethodInvocation rmi)

      Return the ProceedingJoinPoint for the current invocation, instantiating it lazily if it hasn't been bound to the thread already.
      Parameters:
        `rmi` - the current Spring AOP ReflectiveMethodInvocation, which we'll use for attribute binding
      Returns:
        the ProceedingJoinPoint to make available to advice methods