org.springframework.aop.interceptor

Class ExposeInvocationInterceptor

  • java.lang.Object
    • org.springframework.aop.interceptor.ExposeInvocationInterceptor
  • All Implemented Interfaces:
    java.io.Serializable, Advice, Interceptor, MethodInterceptor, Ordered, PriorityOrdered


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

      • 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 java.lang.IllegalStateException
        Return the AOP Alliance MethodInvocation object associated with the current invocation.
        Returns:
        the invocation object associated with the current invocation
        Throws:
        java.lang.IllegalStateException - if there is no AOP invocation in progress, or if the ExposeInvocationInterceptor was not added to this interceptor chain
      • invoke

        public java.lang.Object invoke(MethodInvocation mi)
                                throws java.lang.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:
        java.lang.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
        Returns:
        the order value
        See Also:
        Ordered.HIGHEST_PRECEDENCE, Ordered.LOWEST_PRECEDENCE