Class ExposeInvocationInterceptor

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

public final class ExposeInvocationInterceptor extends Object implements MethodInterceptor, PriorityOrdered, 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.

Rod Johnson, Juergen Hoeller
See Also:
  • Field Details


      public static final ExposeInvocationInterceptor INSTANCE
      Singleton instance of this class.

      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 Details

    • currentInvocation

      public static MethodInvocation currentInvocation() throws IllegalStateException
      Return the AOP Alliance MethodInvocation object associated with the current invocation.
      the invocation object associated with the current invocation
      IllegalStateException - if there is no AOP invocation in progress, or if the ExposeInvocationInterceptor was not added to this interceptor chain
    • 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
      mi - the method invocation joinpoint
      the result of the call to Joinpoint.proceed(); might be intercepted by the interceptor
      Throwable - if the interceptors or the target object throws an exception
    • getOrder

      public int getOrder()
      Description copied from interface: Ordered
      Get the order value of this object.

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

      Same order values will result in arbitrary sort positions for the affected objects.

      Specified by:
      getOrder in interface Ordered
      the order value
      See Also: