org.springframework.aop.aspectj.annotation

## 接口 AspectJAdvisorFactory

- 所有已知实现类:
    AbstractAspectJAdvisorFactory, ReflectiveAspectJAdvisorFactory

      public interface AspectJAdvisorFactory

  Interface for factories that can create Spring AOP Advisors from classes annotated with AspectJ annotation syntax.
  从以下版本开始:
    2.0
  作者:
    Rod Johnson, Juergen Hoeller
  另请参阅:
    `AspectMetadata`, `AjTypeSystem`

- - ### 方法概要

    所有方法 实例方法 抽象方法
    限定符和类型 | 方法和说明
    --- | ---
    `Advice` | `getAdvice(Method candidateAdviceMethod, AspectJExpressionPointcut expressionPointcut, MetadataAwareAspectInstanceFactory aspectInstanceFactory, int declarationOrder, String aspectName)` Build a Spring AOP Advice for the given AspectJ advice method.
    `Advisor` | `getAdvisor(Method candidateAdviceMethod, MetadataAwareAspectInstanceFactory aspectInstanceFactory, int declarationOrder, String aspectName)` Build a Spring AOP Advisor for the given AspectJ advice method.
    `List<Advisor>` | `getAdvisors(MetadataAwareAspectInstanceFactory aspectInstanceFactory)` Build Spring AOP Advisors for all annotated At-AspectJ methods on the specified aspect instance.
    `boolean` | `isAspect(Class<?> clazz)` Determine whether or not the given class is an aspect, as reported by AspectJ's `AjTypeSystem`.
    `void` | `validate(Class<?> aspectClass)` Is the given class a valid AspectJ aspect class?

- - ### 方法详细资料

    - #### isAspect

          boolean isAspect(Class<?> clazz)

      Determine whether or not the given class is an aspect, as reported by AspectJ's `AjTypeSystem`.

      Will simply return `false` if the supposed aspect is invalid (such as an extension of a concrete aspect class). Will return true for some aspects that Spring AOP cannot process, such as those with unsupported instantiation models. Use the `validate(java.lang.Class<?>)` method to handle these cases if necessary.

      参数:
        `clazz` - the supposed annotation-style AspectJ class
      返回:
        whether or not this class is recognized by AspectJ as an aspect class

    - #### validate

          void validate(Class<?> aspectClass)
                 throws AopConfigException

      Is the given class a valid AspectJ aspect class?
      参数:
        `aspectClass` - the supposed AspectJ annotation-style class to validate
      抛出:
        `AopConfigException` - if the class is an invalid aspect (which can never be legal)
        `NotAnAtAspectException` - if the class is not an aspect at all (which may or may not be legal, depending on the context)

    - #### getAdvisors

          List<Advisor> getAdvisors(MetadataAwareAspectInstanceFactory aspectInstanceFactory)

      Build Spring AOP Advisors for all annotated At-AspectJ methods on the specified aspect instance.
      参数:
        `aspectInstanceFactory` - the aspect instance factory (not the aspect instance itself in order to avoid eager instantiation)
      返回:
        a list of advisors for this class

    - #### getAdvisor

          @Nullable
          Advisor getAdvisor(Method candidateAdviceMethod,
                                        MetadataAwareAspectInstanceFactory aspectInstanceFactory,
                                        int declarationOrder,
                                        String aspectName)

      Build a Spring AOP Advisor for the given AspectJ advice method.
      参数:
        `candidateAdviceMethod` - the candidate advice method
        `aspectInstanceFactory` - the aspect instance factory
        `declarationOrder` - the declaration order within the aspect
        `aspectName` - the name of the aspect
      返回:
        `null` if the method is not an AspectJ advice method or if it is a pointcut that will be used by other advice but will not create a Spring advice in its own right

    - #### getAdvice

          @Nullable
          Advice getAdvice(Method candidateAdviceMethod,
                                      AspectJExpressionPointcut expressionPointcut,
                                      MetadataAwareAspectInstanceFactory aspectInstanceFactory,
                                      int declarationOrder,
                                      String aspectName)

      Build a Spring AOP Advice for the given AspectJ advice method.
      参数:
        `candidateAdviceMethod` - the candidate advice method
        `expressionPointcut` - the AspectJ expression pointcut
        `aspectInstanceFactory` - the aspect instance factory
        `declarationOrder` - the declaration order within the aspect
        `aspectName` - the name of the aspect
      返回:
        `null` if the method is not an AspectJ advice method or if it is a pointcut that will be used by other advice but will not create a Spring advice in its own right
      另请参阅:
        `AspectJAroundAdvice`, `AspectJMethodBeforeAdvice`, `AspectJAfterAdvice`, `AspectJAfterReturningAdvice`, `AspectJAfterThrowingAdvice`