## org.springframework.aop.aspectj.annotation
Interface AspectJAdvisorFactory

All Known Implementing Classes:
  AbstractAspectJAdvisorFactory, ReflectiveAspectJAdvisorFactory

    public interface AspectJAdvisorFactory

Interface for factories that can create Spring AOP Advisors from classes annotated with AspectJ annotation syntax.

Since:
  2.0
Author:
  Rod Johnson, Juergen Hoeller
See Also:
  `AspectMetadata`, `AjTypeSystem`

Method Summary
`Advice` `getAdvice(Method candidateAdviceMethod, AspectJExpressionPointcut pointcut, MetadataAwareAspectInstanceFactory aif, int declarationOrderInAspect, String aspectName)` Build a Spring AOP Advice for the given AspectJ advice method.
`Advisor` `getAdvisor(Method candidateAdviceMethod, MetadataAwareAspectInstanceFactory aif, int declarationOrderInAspect, String aspectName)` Build a Spring AOP Advisor for the given AspectJ advice method.
`List<Advisor>` `getAdvisors(MetadataAwareAspectInstanceFactory aif)` 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?

Method Detail

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

  Parameters:
    `clazz` - the supposed annotation-style AspectJ class
  Returns:
    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?

  Parameters:
    `aspectClass` - the supposed AspectJ annotation-style class to validate
  Throws:
    `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 aif)

  Build Spring AOP Advisors for all annotated At-AspectJ methods on the specified aspect instance.

  Parameters:
    `aif` - the aspect instance factory (not the aspect instance itself in order to avoid eager instantiation)
  Returns:
    a list of advisors for this class

### getAdvisor

    Advisor getAdvisor(Method candidateAdviceMethod,
                       MetadataAwareAspectInstanceFactory aif,
                       int declarationOrderInAspect,
                       String aspectName)

  Build a Spring AOP Advisor for the given AspectJ advice method.

  Parameters:
    `candidateAdviceMethod` - the candidate advice method
    `aif` - the aspect instance factory
    `declarationOrderInAspect` - the declaration order within the aspect
    `aspectName` - the name of the aspect
  Returns:
    `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

    Advice getAdvice(Method candidateAdviceMethod,
                     AspectJExpressionPointcut pointcut,
                     MetadataAwareAspectInstanceFactory aif,
                     int declarationOrderInAspect,
                     String aspectName)

  Build a Spring AOP Advice for the given AspectJ advice method.

  Parameters:
    `candidateAdviceMethod` - the candidate advice method
    `pointcut` - the corresponding AspectJ expression pointcut
    `aif` - the aspect instance factory
    `declarationOrderInAspect` - the declaration order within the aspect
    `aspectName` - the name of the aspect
  Returns:
    `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
  See Also:
    `AspectJAroundAdvice`, `AspectJMethodBeforeAdvice`, `AspectJAfterAdvice`, `AspectJAfterReturningAdvice`, `AspectJAfterThrowingAdvice`

Copyright © 2002-2008 The Spring Framework.