Package org.springframework.aop.interceptor

# Class ExposeInvocationInterceptor

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

All Implemented Interfaces:
  `Serializable`, `Advice`, `Interceptor`, `MethodInterceptor`, `org.springframework.core.Ordered`, `org.springframework.core.PriorityOrdered`

public final class ExposeInvocationInterceptor extends Object implements MethodInterceptor, org.springframework.core.PriorityOrdered, Serializable
Interceptor that exposes the current `MethodInvocation` as a thread-local object. We occasionally need to do this; for example, when a pointcut (for example, 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
Description
`static final Advisor`
`ADVISOR`
Singleton advisor for this class.
`static final ExposeInvocationInterceptor`
`INSTANCE`
Singleton instance of this class.

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

`HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

## Method Summary

Modifier and Type
Method
Description
`static MethodInvocation`
`currentInvocation()`
Return the AOP Alliance MethodInvocation object associated with the current invocation.
`int`
`getOrder()`
`Object`
`invoke(MethodInvocation mi)`
Implement this method to perform extra treatments before and after the invocation.

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

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

## Field Details

### 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 Details

### 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

@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

### getOrder

public int getOrder()

Specified by:
  `getOrder` in interface `org.springframework.core.Ordered`