类 AspectJExpressionPointcut

java.lang.Object
infra.aop.support.AbstractExpressionPointcut
infra.aop.aspectj.AspectJExpressionPointcut
所有已实现的接口:
ClassFilter, IntroductionAwareMethodMatcher, MethodMatcher, Pointcut, ExpressionPointcut, infra.beans.factory.Aware, infra.beans.factory.BeanFactoryAware, Serializable

public class AspectJExpressionPointcut extends AbstractExpressionPointcut implements ClassFilter, IntroductionAwareMethodMatcher, infra.beans.factory.BeanFactoryAware
Framework Pointcut implementation that uses the AspectJ weaver to evaluate a pointcut expression.

The pointcut expression value is an AspectJ expression. This can reference other pointcuts and use composition and other operations.

Naturally, as this is to be processed by Framework AOP's proxy-based model, only method execution pointcuts are supported.

从以下版本开始:
4.0
作者:
Rob Harrop, Adrian Colyer, Rod Johnson, Juergen Hoeller, Ramnivas Laddad, Dave Syer, Harry Yang
另请参阅:
  • 字段详细资料

    • AJC_MAGIC

      private static final String AJC_MAGIC
      另请参阅:
    • SUPPORTED_PRIMITIVES

      private static final Set<org.aspectj.weaver.tools.PointcutPrimitive> SUPPORTED_PRIMITIVES
    • log

      private static final infra.logging.Logger log
    • pointcutDeclarationScope

      @Nullable private Class<?> pointcutDeclarationScope
    • aspectCompiledByAjc

      private boolean aspectCompiledByAjc
    • pointcutParameterNames

      private String[] pointcutParameterNames
    • pointcutParameterTypes

      private Class<?>[] pointcutParameterTypes
    • beanFactory

      @Nullable private infra.beans.factory.BeanFactory beanFactory
    • pointcutClassLoader

      @Nullable private transient ClassLoader pointcutClassLoader
    • pointcutExpression

      @Nullable private transient org.aspectj.weaver.tools.PointcutExpression pointcutExpression
    • pointcutParsingFailed

      private transient boolean pointcutParsingFailed
  • 构造器详细资料

    • AspectJExpressionPointcut

      public AspectJExpressionPointcut()
      Create a new default AspectJExpressionPointcut.
    • AspectJExpressionPointcut

      public AspectJExpressionPointcut(Class<?> declarationScope, String[] paramNames, Class<?>[] paramTypes)
      Create a new AspectJExpressionPointcut with the given settings.
      参数:
      declarationScope - the declaration scope for the pointcut
      paramNames - the parameter names for the pointcut
      paramTypes - the parameter types for the pointcut
  • 方法详细资料

    • setPointcutDeclarationScope

      public void setPointcutDeclarationScope(Class<?> pointcutDeclarationScope)
      Set the declaration scope for the pointcut.
    • setParameterNames

      public void setParameterNames(String... names)
      Set the parameter names for the pointcut.
    • setParameterTypes

      public void setParameterTypes(Class<?>... types)
      Set the parameter types for the pointcut.
    • setBeanFactory

      public void setBeanFactory(infra.beans.factory.BeanFactory beanFactory)
      指定者:
      setBeanFactory 在接口中 infra.beans.factory.BeanFactoryAware
    • getClassFilter

      public ClassFilter getClassFilter()
      从接口复制的说明: Pointcut
      Return the ClassFilter for this pointcut.
      指定者:
      getClassFilter 在接口中 Pointcut
      返回:
      the ClassFilter (never null)
    • getMethodMatcher

      public MethodMatcher getMethodMatcher()
      从接口复制的说明: Pointcut
      Return the MethodMatcher for this pointcut.
      指定者:
      getMethodMatcher 在接口中 Pointcut
      返回:
      the MethodMatcher (never null)
    • checkExpression

      private void checkExpression()
      Check whether this pointcut is ready to match.
    • obtainPointcutExpression

      private org.aspectj.weaver.tools.PointcutExpression obtainPointcutExpression()
      Lazily build the underlying AspectJ pointcut expression.
    • determinePointcutClassLoader

      @Nullable private ClassLoader determinePointcutClassLoader()
      Determine the ClassLoader to use for pointcut evaluation.
    • buildPointcutExpression

      private org.aspectj.weaver.tools.PointcutExpression buildPointcutExpression(@Nullable ClassLoader classLoader)
      Build the underlying AspectJ pointcut expression.
    • resolveExpression

      private String resolveExpression()
    • initializePointcutParser

      private org.aspectj.weaver.tools.PointcutParser initializePointcutParser(@Nullable ClassLoader classLoader)
      Initialize the underlying AspectJ pointcut parser.
    • replaceBooleanOperators

      private String replaceBooleanOperators(String pcExpr)
      If a pointcut expression has been specified in XML, the user cannot write "and" as "&&" (though &amp;&amp; will work).

      We also allow "and" between two pointcut sub-expressions.

      This method converts back to && for the AspectJ pointcut parser.

    • getPointcutExpression

      public org.aspectj.weaver.tools.PointcutExpression getPointcutExpression()
      Return the underlying AspectJ pointcut expression.
    • matches

      public boolean matches(Class<?> targetClass)
      从接口复制的说明: ClassFilter
      Should the pointcut apply to the given interface or target class?
      指定者:
      matches 在接口中 ClassFilter
      参数:
      targetClass - the candidate target class
      返回:
      whether the advice should apply to the given target class
    • matches

      public boolean matches(Method method, Class<?> targetClass, boolean hasIntroductions)
      从接口复制的说明: IntroductionAwareMethodMatcher
      Perform static checking whether the given method matches. This may be invoked instead of the 2-arg MethodMatcher.matches(java.lang.reflect.Method, Class) method if the caller supports the extended IntroductionAwareMethodMatcher interface.
      指定者:
      matches 在接口中 IntroductionAwareMethodMatcher
      参数:
      method - the candidate method
      targetClass - the target class
      hasIntroductions - true if the object on whose behalf we are asking is the subject on one or more introductions; false otherwise
      返回:
      whether or not this method matches statically
    • matches

      public boolean matches(Method method, Class<?> targetClass)
      从接口复制的说明: MethodMatcher
      Checking whether the given method matches.
      指定者:
      matches 在接口中 MethodMatcher
      参数:
      method - the candidate method
      targetClass - the target class
      返回:
      whether or not this method matches on application startup.
    • isRuntime

      public boolean isRuntime()
      从接口复制的说明: MethodMatcher
      Is this MethodMatcher dynamic, that is, must a final call be made on the MethodMatcher.matches(MethodInvocation) method at runtime even if the 2-arg matches method returns true?

      Can be invoked when an AOP proxy is created, and need not be invoked again before each method invocation,

      指定者:
      isRuntime 在接口中 MethodMatcher
      返回:
      whether or not a runtime match via the 1-arg MethodMatcher.matches(MethodInvocation) method is required if static matching passed
    • matches

      public boolean matches(MethodInvocation invocation)
      从接口复制的说明: MethodMatcher
      Check whether there a runtime (dynamic) match for this method, which must have matched statically.

      This method is invoked only if the 2-arg matches method returns true for the given method and target class, and if the MethodMatcher.isRuntime() method returns true. Invoked immediately before potential running of the advice, after any advice earlier in the advice chain has run.

      指定者:
      matches 在接口中 MethodMatcher
      参数:
      invocation - runtime invocation contains the candidate method and target class, arguments to the method
      返回:
      whether there's a runtime match
      另请参阅:
    • getCurrentProxiedBeanName

      @Nullable protected String getCurrentProxiedBeanName()
    • getFallbackPointcutExpression

      @Nullable private org.aspectj.weaver.tools.PointcutExpression getFallbackPointcutExpression(Class<?> targetClass)
      Get a new pointcut expression based on a target class's loader rather than the default.
    • getRuntimeTestWalker

      private RuntimeTestWalker getRuntimeTestWalker(org.aspectj.weaver.tools.ShadowMatch shadowMatch)
    • bindParameters

      private void bindParameters(ProxyMethodInvocation invocation, org.aspectj.weaver.tools.JoinPointMatch jpm)
    • getTargetShadowMatch

      private org.aspectj.weaver.tools.ShadowMatch getTargetShadowMatch(Method method, Class<?> targetClass)
    • getShadowMatch

      private org.aspectj.weaver.tools.ShadowMatch getShadowMatch(Method targetMethod, Method originalMethod)
    • containsAnnotationPointcut

      private boolean containsAnnotationPointcut()
    • compiledByAjc

      private static boolean compiledByAjc(Class<?> clazz)
    • equals

      public boolean equals(@Nullable Object other)
      覆盖:
      equals 在类中 Object
    • hashCode

      public int hashCode()
      覆盖:
      hashCode 在类中 Object
    • toString

      public String toString()
      覆盖:
      toString 在类中 Object