org.springframework.aop.interceptor

## Class ExposeInvocationInterceptor

- java.lang.Object
- - org.springframework.aop.interceptor.ExposeInvocationInterceptor

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

      public class ExposeInvocationInterceptor
      extends Object
      implements MethodInterceptor, Ordered, Serializable

  Interceptor that exposes the current `MethodInvocation` as a thread-local object. We occasionally need to do this; for example, when a pointcut (e.g. an AspectJ expression pointcut) needs to know the full invocation context.

  Don't use this interceptor unless this is really necessary. Target objects should not normally know about Spring AOP, as this creates a dependency on Spring API. Target objects should be plain POJOs as far as possible.

  If used, this interceptor will normally be the first in the interceptor chain.

  Author:
    Rod Johnson, Juergen Hoeller
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static Advisor` | `ADVISOR` Singleton advisor for this class.
    `static ExposeInvocationInterceptor` | `INSTANCE` Singleton instance of this class

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

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static MethodInvocation` | `currentInvocation()` Return the AOP Alliance MethodInvocation object associated with the current invocation.
    `int` | `getOrder()` Return the order value of this object, with a higher value meaning greater in terms of sorting.
    `Object` | `invoke(MethodInvocation mi)`

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

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

- - ### Field Detail

    - #### INSTANCE

          public static final ExposeInvocationInterceptor INSTANCE

      Singleton instance of this class

    - #### ADVISOR

          public static final Advisor ADVISOR

      Singleton advisor for this class. Use in preference to INSTANCE when using Spring AOP, as it prevents the need to create a new Advisor to wrap the instance.

  - ### Method Detail

    - #### currentInvocation

          public static MethodInvocation currentInvocation()
                                                    throws IllegalStateException

      Return the AOP Alliance MethodInvocation object associated with the current invocation.
      Returns:
        the invocation object associated with the current invocation
      Throws:
        `IllegalStateException` - if there is no AOP invocation in progress, or if the ExposeInvocationInterceptor was not added to this interceptor chain

    - #### invoke

          public Object invoke(MethodInvocation mi)
                        throws Throwable

      Specified by:
        `invoke` in interface `MethodInterceptor`
      Throws:
        `Throwable`

    - #### getOrder

          public int getOrder()

      Description copied from interface: `Ordered`
      Return the order value of this object, with a higher value meaning greater in terms of sorting.

      Normally starting with 0, with `Integer.MAX_VALUE` indicating the greatest value. Same order values will result in arbitrary positions for the affected objects.

      Higher values can be interpreted as lower priority. As a consequence, the object with the lowest value has highest priority (somewhat analogous to Servlet "load-on-startup" values).

      Specified by:
        `getOrder` in interface `Ordered`
      Returns:
        the order value