@FunctionalInterface public interface MethodInterceptor extends Interceptor
The user should implement the invoke(MethodInvocation)
 method to modify the original behavior. E.g. the following class
 implements a tracing interceptor (traces all the calls on the
 intercepted method(s)):
 
 class TracingInterceptor implements MethodInterceptor {
   Object invoke(MethodInvocation i) throws Throwable {
     System.out.println("method "+i.getMethod()+" is called on "+
                        i.getThis()+" with args "+i.getArguments());
     Object ret=i.proceed();
     System.out.println("method "+i.getMethod()+" returns "+ret);
     return ret;
   }
 }
 | Modifier and Type | Method and Description | 
|---|---|
| Object | invoke(MethodInvocation invocation)Implement this method to perform extra treatments before and
 after the invocation. | 
Object invoke(MethodInvocation invocation) throws Throwable
Joinpoint.proceed().invocation - the method invocation joinpointJoinpoint.proceed();
 might be intercepted by the interceptorThrowable - if the interceptors or the target object
 throws an exception