## 接口的使用
org.aopalliance.intercept.MethodInvocation

- 使用MethodInvocation的程序包
  程序包 | 说明
  --- | ---
  org.aopalliance.intercept | The AOP Alliance reflective interception abstraction.
  org.springframework.aop | Core Spring AOP interfaces, built on AOP Alliance AOP interoperability interfaces.
  org.springframework.aop.aspectj | AspectJ integration package.
  org.springframework.aop.framework | Package containing Spring's basic AOP infrastructure, compliant with the AOP Alliance interfaces.
  org.springframework.aop.framework.adapter | SPI package allowing Spring AOP framework to handle arbitrary advice types.
  org.springframework.aop.interceptor | Provides miscellaneous interceptor implementations.
  org.springframework.aop.support | Convenience classes for using Spring's AOP API.

- - ### org.aopalliance.intercept中MethodInvocation的使用

    参数类型为MethodInvocation的org.aopalliance.intercept中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `Object` | MethodInterceptor.`invoke(MethodInvocation invocation)` 方法实现说明

  - ### org.springframework.aop中MethodInvocation的使用

    org.springframework.aop中MethodInvocation的子接口
    限定符和类型 | 接口和说明
    --- | ---
    `interface` | `ProxyMethodInvocation` Extension of the AOP Alliance `MethodInvocation` interface, allowing access to the proxy that the method invocation was made through.

    返回MethodInvocation的org.springframework.aop中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `MethodInvocation` | ProxyMethodInvocation.`invocableClone()` Create a clone of this object.
    `MethodInvocation` | ProxyMethodInvocation.`invocableClone(Object... arguments)` Create a clone of this object.

  - ### org.springframework.aop.aspectj中MethodInvocation的使用

    参数类型为MethodInvocation的org.springframework.aop.aspectj中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `Object` | AspectJAfterAdvice.`invoke(MethodInvocation mi)` 方法实现说明
    `Object` | AspectJAfterThrowingAdvice.`invoke(MethodInvocation mi)` 方法实现说明:执行我们的异常通知
    `Object` | AspectJAroundAdvice.`invoke(MethodInvocation mi)`

  - ### org.springframework.aop.framework中MethodInvocation的使用

    实现MethodInvocation的org.springframework.aop.framework中的类
    限定符和类型 | 类和说明
    --- | ---
    `class` | `ReflectiveMethodInvocation` Spring's implementation of the AOP Alliance `MethodInvocation` interface, implementing the extended `ProxyMethodInvocation` interface.

    返回MethodInvocation的org.springframework.aop.framework中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `MethodInvocation` | ReflectiveMethodInvocation.`invocableClone()` This implementation returns a shallow copy of this invocation object, including an independent copy of the original arguments array.
    `MethodInvocation` | ReflectiveMethodInvocation.`invocableClone(Object... arguments)` This implementation returns a shallow copy of this invocation object, using the given arguments array for the clone.

  - ### org.springframework.aop.framework.adapter中MethodInvocation的使用

    参数类型为MethodInvocation的org.springframework.aop.framework.adapter中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `Object` | AfterReturningAdviceInterceptor.`invoke(MethodInvocation mi)`
    `Object` | MethodBeforeAdviceInterceptor.`invoke(MethodInvocation mi)`
    `Object` | ThrowsAdviceInterceptor.`invoke(MethodInvocation mi)`

  - ### org.springframework.aop.interceptor中MethodInvocation的使用

    返回MethodInvocation的org.springframework.aop.interceptor中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `static MethodInvocation` | ExposeInvocationInterceptor.`currentInvocation()` Return the AOP Alliance MethodInvocation object associated with the current invocation.

    参数类型为MethodInvocation的org.springframework.aop.interceptor中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `protected String` | AbstractMonitoringInterceptor.`createInvocationTraceName(MethodInvocation invocation)` Create a `String` name for the given `MethodInvocation` that can be used for trace/logging purposes.
    `static String` | ExposeBeanNameAdvisors.`getBeanName(MethodInvocation mi)` Find the bean name for the given invocation.
    `protected String` | DebugInterceptor.`getInvocationDescription(MethodInvocation invocation)`
    `protected String` | SimpleTraceInterceptor.`getInvocationDescription(MethodInvocation invocation)` Return a description for the given method invocation.
    `protected Log` | AbstractTraceInterceptor.`getLoggerForInvocation(MethodInvocation invocation)` Return the appropriate `Log` instance to use for the given `MethodInvocation`.
    `Object` | AbstractTraceInterceptor.`invoke(MethodInvocation invocation)` Determines whether or not logging is enabled for the particular `MethodInvocation`.
    `Object` | AsyncExecutionInterceptor.`invoke(MethodInvocation invocation)` Intercept the given method invocation, submit the actual calling of the method to the correct task executor and return immediately to the caller.
    `Object` | ConcurrencyThrottleInterceptor.`invoke(MethodInvocation methodInvocation)`
    `Object` | DebugInterceptor.`invoke(MethodInvocation invocation)`
    `Object` | ExposeInvocationInterceptor.`invoke(MethodInvocation mi)`
    `protected abstract Object` | AbstractTraceInterceptor.`invokeUnderTrace(MethodInvocation invocation, Log logger)` Subclasses must override this method to perform any tracing around the supplied `MethodInvocation`.
    `protected Object` | CustomizableTraceInterceptor.`invokeUnderTrace(MethodInvocation invocation, Log logger)` Writes a log message before the invocation based on the value of `enterMessage`.
    `protected Object` | JamonPerformanceMonitorInterceptor.`invokeUnderTrace(MethodInvocation invocation, Log logger)` Wraps the invocation with a JAMon Monitor and writes the current performance statistics to the log (if enabled).
    `protected Object` | PerformanceMonitorInterceptor.`invokeUnderTrace(MethodInvocation invocation, Log logger)`
    `protected Object` | SimpleTraceInterceptor.`invokeUnderTrace(MethodInvocation invocation, Log logger)`
    `protected boolean` | AbstractTraceInterceptor.`isInterceptorEnabled(MethodInvocation invocation, Log logger)` Determine whether the interceptor should kick in, that is, whether the `invokeUnderTrace` method should be called.
    `protected boolean` | JamonPerformanceMonitorInterceptor.`isInterceptorEnabled(MethodInvocation invocation, Log logger)` Always applies the interceptor if the "trackAllInvocations" flag has been set; else just kicks in if the log is enabled.
    `protected String` | CustomizableTraceInterceptor.`replacePlaceholders(String message, MethodInvocation methodInvocation, Object returnValue, Throwable throwable, long invocationTime)` Replace the placeholders in the given message with the supplied values, or values derived from those supplied.

  - ### org.springframework.aop.support中MethodInvocation的使用

    参数类型为MethodInvocation的org.springframework.aop.support中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `protected Object` | DelegatePerTargetObjectIntroductionInterceptor.`doProceed(MethodInvocation mi)` Proceed with the supplied `MethodInterceptor`.
    `protected Object` | DelegatingIntroductionInterceptor.`doProceed(MethodInvocation mi)` Proceed with the supplied `MethodInterceptor`.
    `Object` | DelegatePerTargetObjectIntroductionInterceptor.`invoke(MethodInvocation mi)` Subclasses may need to override this if they want to perform custom behaviour in around advice.
    `Object` | DelegatingIntroductionInterceptor.`invoke(MethodInvocation mi)` Subclasses may need to override this if they want to perform custom behaviour in around advice.
    `protected boolean` | IntroductionInfoSupport.`isMethodOnIntroducedInterface(MethodInvocation mi)` Is this method on an introduced interface?