org.springframework.aop.aspectj

## 类 AbstractAspectJAdvice

- java.lang.Object
- - org.springframework.aop.aspectj.AbstractAspectJAdvice

- 所有已实现的接口:
    Serializable, Advice, AspectJPrecedenceInformation, org.springframework.core.Ordered
  直接已知子类:
    AspectJAfterAdvice, AspectJAfterReturningAdvice, AspectJAfterThrowingAdvice, AspectJAroundAdvice, AspectJMethodBeforeAdvice

      public abstract class AbstractAspectJAdvice
      extends Object
      implements Advice, AspectJPrecedenceInformation, Serializable

  另请参阅:
    序列化表格

- - ### 字段概要

    字段
    限定符和类型 | 字段和说明
    --- | ---
    `protected Method` | `aspectJAdviceMethod`
    `protected static String` | `JOIN_POINT_KEY` Key used in ReflectiveMethodInvocation userAtributes map for the current joinpoint.

    - ### 从接口继承的字段 org.springframework.core.Ordered

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### 构造器概要

    构造器
    构造器和说明
    `AbstractAspectJAdvice(Method aspectJAdviceMethod, AspectJExpressionPointcut pointcut, AspectInstanceFactory aspectInstanceFactory)` Create a new AbstractAspectJAdvice for the given advice method.

  - ### 方法概要

    所有方法 静态方法 实例方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `protected Object[]` | `argBinding(org.aspectj.lang.JoinPoint jp, org.aspectj.weaver.tools.JoinPointMatch jpMatch, Object returnValue, Throwable ex)` Take the arguments at the method execution join point and output a set of arguments to the advice method
    `Pointcut` | `buildSafePointcut()` Build a 'safe' pointcut that excludes the AspectJ advice method itself.
    `void` | `calculateArgumentBindings()` Do as much work as we can as part of the set-up so that argument binding on subsequent advice invocations can be as fast as possible.
    `protected org.springframework.core.ParameterNameDiscoverer` | `createParameterNameDiscoverer()` Create a ParameterNameDiscoverer to be used for argument binding.
    `static org.aspectj.lang.JoinPoint` | `currentJoinPoint()` Lazily instantiate joinpoint for the current invocation.
    `ClassLoader` | `getAspectClassLoader()` Return the ClassLoader for aspect instances.
    `AspectInstanceFactory` | `getAspectInstanceFactory()` Return the factory for aspect instances.
    `Method` | `getAspectJAdviceMethod()` Return the AspectJ-style advice method.
    `String` | `getAspectName()` Return the name of the aspect (bean) in which the advice was declared.
    `int` | `getDeclarationOrder()` Return the declaration order of the advice member within the aspect.
    `protected Type` | `getDiscoveredReturningGenericType()`
    `protected Class<?>` | `getDiscoveredReturningType()`
    `protected Class<?>` | `getDiscoveredThrowingType()`
    `protected org.aspectj.lang.JoinPoint` | `getJoinPoint()` Overridden in around advice to return proceeding join point.
    `protected org.aspectj.weaver.tools.JoinPointMatch` | `getJoinPointMatch()` Get the current join point match at the join point we are being dispatched on.
    `protected org.aspectj.weaver.tools.JoinPointMatch` | `getJoinPointMatch(ProxyMethodInvocation pmi)`
    `int` | `getOrder()`
    `AspectJExpressionPointcut` | `getPointcut()` Return the AspectJ expression pointcut.
    `protected Object` | `invokeAdviceMethod(org.aspectj.lang.JoinPoint jp, org.aspectj.weaver.tools.JoinPointMatch jpMatch, Object returnValue, Throwable t)`
    `protected Object` | `invokeAdviceMethod(org.aspectj.weaver.tools.JoinPointMatch jpMatch, Object returnValue, Throwable ex)` Invoke the advice method.
    `protected Object` | `invokeAdviceMethodWithGivenArgs(Object[] args)`
    `void` | `setArgumentNames(String argNames)` Set by creator of this advice object if the argument names are known.
    `void` | `setArgumentNamesFromStringArray(String... args)`
    `void` | `setAspectName(String name)` Set the name of the aspect (bean) in which the advice was declared.
    `void` | `setDeclarationOrder(int order)` Set the declaration order of this advice within the aspect.
    `void` | `setReturningName(String name)`
    `protected void` | `setReturningNameNoCheck(String name)` We need to hold the returning name at this level for argument binding calculations, this method allows the afterReturning advice subclass to set the name.
    `void` | `setThrowingName(String name)`
    `protected void` | `setThrowingNameNoCheck(String name)` We need to hold the throwing name at this level for argument binding calculations, this method allows the afterThrowing advice subclass to set the name.
    `protected boolean` | `supportsProceedingJoinPoint()`
    `String` | `toString()`

    - ### 从类继承的方法 java.lang.Object

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

    - ### 从接口继承的方法 org.springframework.aop.aspectj.AspectJPrecedenceInformation

      `isAfterAdvice, isBeforeAdvice`

- - ### 字段详细资料

    - #### JOIN_POINT_KEY

          protected static final String JOIN_POINT_KEY

      Key used in ReflectiveMethodInvocation userAtributes map for the current joinpoint.

    - #### aspectJAdviceMethod

          protected transient Method aspectJAdviceMethod

  - ### 构造器详细资料

    - #### AbstractAspectJAdvice

          public AbstractAspectJAdvice(Method aspectJAdviceMethod,
                                       AspectJExpressionPointcut pointcut,
                                       AspectInstanceFactory aspectInstanceFactory)

      Create a new AbstractAspectJAdvice for the given advice method.
      参数:
        `aspectJAdviceMethod` - the AspectJ-style advice method
        `pointcut` - the AspectJ expression pointcut
        `aspectInstanceFactory` - the factory for aspect instances

  - ### 方法详细资料

    - #### currentJoinPoint

          public static org.aspectj.lang.JoinPoint currentJoinPoint()

      Lazily instantiate joinpoint for the current invocation. Requires MethodInvocation to be bound with ExposeInvocationInterceptor.

      Do not use if access is available to the current ReflectiveMethodInvocation (in an around advice).

      返回:
        current AspectJ joinpoint, or through an exception if we're not in a Spring AOP invocation.

    - #### getAspectJAdviceMethod

          public final Method getAspectJAdviceMethod()

      Return the AspectJ-style advice method.

    - #### getPointcut

          public final AspectJExpressionPointcut getPointcut()

      Return the AspectJ expression pointcut.

    - #### buildSafePointcut

          public final Pointcut buildSafePointcut()

      Build a 'safe' pointcut that excludes the AspectJ advice method itself.
      返回:
        a composable pointcut that builds on the original AspectJ expression pointcut
      另请参阅:
        `getPointcut()`

    - #### getAspectInstanceFactory

          public final AspectInstanceFactory getAspectInstanceFactory()

      Return the factory for aspect instances.

    - #### getAspectClassLoader

          @Nullable
          public final ClassLoader getAspectClassLoader()

      Return the ClassLoader for aspect instances.

    - #### getOrder

          public int getOrder()

      指定者:
        `getOrder` 在接口中 `org.springframework.core.Ordered`

    - #### setAspectName

          public void setAspectName(String name)

      Set the name of the aspect (bean) in which the advice was declared.

    - #### getAspectName

          public String getAspectName()

      从接口复制的说明: `AspectJPrecedenceInformation`
      Return the name of the aspect (bean) in which the advice was declared.
      指定者:
        `getAspectName` 在接口中 `AspectJPrecedenceInformation`

    - #### setDeclarationOrder

          public void setDeclarationOrder(int order)

      Set the declaration order of this advice within the aspect.

    - #### getDeclarationOrder

          public int getDeclarationOrder()

      从接口复制的说明: `AspectJPrecedenceInformation`
      Return the declaration order of the advice member within the aspect.
      指定者:
        `getDeclarationOrder` 在接口中 `AspectJPrecedenceInformation`

    - #### setArgumentNames

          public void setArgumentNames(String argNames)

      Set by creator of this advice object if the argument names are known.

      This could be for example because they have been explicitly specified in XML, or in an advice annotation.

      参数:
        `argNames` - comma delimited list of arg names

    - #### setArgumentNamesFromStringArray

          public void setArgumentNamesFromStringArray(String... args)

    - #### setReturningName

          public void setReturningName(String name)

    - #### setReturningNameNoCheck

          protected void setReturningNameNoCheck(String name)

      We need to hold the returning name at this level for argument binding calculations, this method allows the afterReturning advice subclass to set the name.

    - #### getDiscoveredReturningType

          protected Class<?> getDiscoveredReturningType()

    - #### getDiscoveredReturningGenericType

          @Nullable
          protected Type getDiscoveredReturningGenericType()

    - #### setThrowingName

          public void setThrowingName(String name)

    - #### setThrowingNameNoCheck

          protected void setThrowingNameNoCheck(String name)

      We need to hold the throwing name at this level for argument binding calculations, this method allows the afterThrowing advice subclass to set the name.

    - #### getDiscoveredThrowingType

          protected Class<?> getDiscoveredThrowingType()

    - #### calculateArgumentBindings

          public final void calculateArgumentBindings()

      Do as much work as we can as part of the set-up so that argument binding on subsequent advice invocations can be as fast as possible.

      If the first argument is of type JoinPoint or ProceedingJoinPoint then we pass a JoinPoint in that position (ProceedingJoinPoint for around advice).

      If the first argument is of type `JoinPoint.StaticPart` then we pass a `JoinPoint.StaticPart` in that position.

      Remaining arguments have to be bound by pointcut evaluation at a given join point. We will get back a map from argument name to value. We need to calculate which advice parameter needs to be bound to which argument name. There are multiple strategies for determining this binding, which are arranged in a ChainOfResponsibility.

    - #### supportsProceedingJoinPoint

          protected boolean supportsProceedingJoinPoint()

    - #### createParameterNameDiscoverer

          protected org.springframework.core.ParameterNameDiscoverer createParameterNameDiscoverer()

      Create a ParameterNameDiscoverer to be used for argument binding.

      The default implementation creates a `DefaultParameterNameDiscoverer` and adds a specifically configured `AspectJAdviceParameterNameDiscoverer`.

    - #### argBinding

          protected Object[] argBinding(org.aspectj.lang.JoinPoint jp,
                                        @Nullable
                                        org.aspectj.weaver.tools.JoinPointMatch jpMatch,
                                        @Nullable
                                        Object returnValue,
                                        @Nullable
                                        Throwable ex)

      Take the arguments at the method execution join point and output a set of arguments to the advice method
      参数:
        `jp` - the current JoinPoint
        `jpMatch` - the join point match that matched this execution join point
        `returnValue` - the return value from the method execution (may be null)
        `ex` - the exception thrown by the method execution (may be null)
      返回:
        the empty array if there are no arguments

    - #### invokeAdviceMethod

          protected Object invokeAdviceMethod(@Nullable
                                              org.aspectj.weaver.tools.JoinPointMatch jpMatch,
                                              @Nullable
                                              Object returnValue,
                                              @Nullable
                                              Throwable ex)
                                       throws Throwable

      Invoke the advice method.
      参数:
        `jpMatch` - the JoinPointMatch that matched this execution join point
        `returnValue` - the return value from the method execution (may be null)
        `ex` - the exception thrown by the method execution (may be null)
      返回:
        the invocation result
      抛出:
        `Throwable` - in case of invocation failure

    - #### invokeAdviceMethod

          protected Object invokeAdviceMethod(org.aspectj.lang.JoinPoint jp,
                                              @Nullable
                                              org.aspectj.weaver.tools.JoinPointMatch jpMatch,
                                              @Nullable
                                              Object returnValue,
                                              @Nullable
                                              Throwable t)
                                       throws Throwable

      抛出:
        `Throwable`

    - #### invokeAdviceMethodWithGivenArgs

          protected Object invokeAdviceMethodWithGivenArgs(Object[] args)
                                                    throws Throwable

      抛出:
        `Throwable`

    - #### getJoinPoint

          protected org.aspectj.lang.JoinPoint getJoinPoint()

      Overridden in around advice to return proceeding join point.

    - #### getJoinPointMatch

          @Nullable
          protected org.aspectj.weaver.tools.JoinPointMatch getJoinPointMatch()

      Get the current join point match at the join point we are being dispatched on.

    - #### getJoinPointMatch

          @Nullable
          protected org.aspectj.weaver.tools.JoinPointMatch getJoinPointMatch(ProxyMethodInvocation pmi)

    - #### toString

          public String toString()

      覆盖:
        `toString` 在类中 `Object`