## 接口的使用
org.springframework.aop.Pointcut

- 使用Pointcut的程序包
  程序包 | 说明
  --- | ---
  org.springframework.aop | Core Spring AOP interfaces, built on AOP Alliance AOP interoperability interfaces.
  org.springframework.aop.aspectj | AspectJ integration package.
  org.springframework.aop.aspectj.annotation | Classes enabling AspectJ 5 @Annotated classes to be used in Spring AOP.
  org.springframework.aop.support | Convenience classes for using Spring's AOP API.
  org.springframework.aop.support.annotation | Annotation support for AOP pointcuts.

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

    声明为Pointcut的org.springframework.aop中的字段
    限定符和类型 | 字段和说明
    --- | ---
    `static Pointcut` | Pointcut.`TRUE` Canonical Pointcut instance that always matches.

    返回Pointcut的org.springframework.aop中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `Pointcut` | PointcutAdvisor.`getPointcut()` Get the Pointcut that drives this advisor.

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

    实现Pointcut的org.springframework.aop.aspectj中的类
    限定符和类型 | 类和说明
    --- | ---
    `class` | `AspectJExpressionPointcut` Spring `Pointcut` implementation that uses the AspectJ weaver to evaluate a pointcut expression.

    返回Pointcut的org.springframework.aop.aspectj中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `Pointcut` | AbstractAspectJAdvice.`buildSafePointcut()` Build a 'safe' pointcut that excludes the AspectJ advice method itself.
    `Pointcut` | AspectJExpressionPointcutAdvisor.`getPointcut()`
    `Pointcut` | AspectJPointcutAdvisor.`getPointcut()`

  - ### org.springframework.aop.aspectj.annotation中Pointcut的使用

    返回Pointcut的org.springframework.aop.aspectj.annotation中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `Pointcut` | AspectMetadata.`getPerClausePointcut()` Return a Spring pointcut expression for a singleton aspect.

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

    org.springframework.aop.support中Pointcut的子接口
    限定符和类型 | 接口和说明
    --- | ---
    `interface` | `ExpressionPointcut` Interface to be implemented by pointcuts that use String expressions.

    实现Pointcut的org.springframework.aop.support中的类
    限定符和类型 | 类和说明
    --- | ---
    `class` | `AbstractExpressionPointcut` Abstract superclass for expression pointcuts, offering location and expression properties.
    `class` | `AbstractRegexpMethodPointcut` Abstract base regular expression pointcut bean.
    `class` | `ComposablePointcut` Convenient class for building up pointcuts.
    `class` | `ControlFlowPointcut` Pointcut and method matcher for use in simple cflow-style pointcut.
    `class` | `DynamicMethodMatcherPointcut` Convenient superclass when we want to force subclasses to implement MethodMatcher interface, but subclasses will want to be pointcuts.
    `class` | `JdkRegexpMethodPointcut` Regular expression pointcut based on the `java.util.regex` package.
    `class` | `NameMatchMethodPointcut` Pointcut bean for simple method name matches, as alternative to regexp patterns.
    `class` | `StaticMethodMatcherPointcut` Convenient superclass when we want to force subclasses to implement the `MethodMatcher` interface but subclasses will want to be pointcuts.
    `class` | `StaticMethodMatcherPointcutAdvisor` Convenient base class for Advisors that are also static pointcuts.

    声明为Pointcut的org.springframework.aop.support中的字段
    限定符和类型 | 字段和说明
    --- | ---
    `static Pointcut` | Pointcuts.`GETTERS` Pointcut matching all bean property getters, in any class
    `static Pointcut` | Pointcuts.`SETTERS` Pointcut matching all bean property setters, in any class

    返回Pointcut的org.springframework.aop.support中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `Pointcut` | DefaultBeanFactoryPointcutAdvisor.`getPointcut()`
    `Pointcut` | DefaultPointcutAdvisor.`getPointcut()`
    `Pointcut` | NameMatchMethodPointcutAdvisor.`getPointcut()`
    `Pointcut` | RegexpMethodPointcutAdvisor.`getPointcut()` Initialize the singleton Pointcut held within this Advisor.
    `Pointcut` | StaticMethodMatcherPointcutAdvisor.`getPointcut()`
    `static Pointcut` | Pointcuts.`intersection(Pointcut pc1, Pointcut pc2)` Match all methods that both the given pointcuts match.
    `static Pointcut` | Pointcuts.`union(Pointcut pc1, Pointcut pc2)` Match all methods that either (or both) of the given pointcuts matches.

    参数类型为Pointcut的org.springframework.aop.support中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `static boolean` | AopUtils.`canApply(Pointcut pc, Class<?> targetClass)` Can the given pointcut apply at all on the given class?
    `static boolean` | AopUtils.`canApply(Pointcut pc, Class<?> targetClass, boolean hasIntroductions)` Can the given pointcut apply at all on the given class?
    `ComposablePointcut` | ComposablePointcut.`intersection(Pointcut other)` Apply an intersection with the given Pointcut.
    `static Pointcut` | Pointcuts.`intersection(Pointcut pc1, Pointcut pc2)` Match all methods that both the given pointcuts match.
    `static boolean` | Pointcuts.`matches(Pointcut pointcut, Method method, Class<?> targetClass, Object... args)` Perform the least expensive check for a pointcut match.
    `void` | DefaultBeanFactoryPointcutAdvisor.`setPointcut(Pointcut pointcut)` Specify the pointcut targeting the advice.
    `void` | DefaultPointcutAdvisor.`setPointcut(Pointcut pointcut)` Specify the pointcut targeting the advice.
    `ComposablePointcut` | ComposablePointcut.`union(Pointcut other)` Apply a union with the given Pointcut.
    `static Pointcut` | Pointcuts.`union(Pointcut pc1, Pointcut pc2)` Match all methods that either (or both) of the given pointcuts matches.

    参数类型为Pointcut的org.springframework.aop.support中的构造器
    构造器和说明
    `ComposablePointcut(Pointcut pointcut)` Create a ComposablePointcut based on the given Pointcut.
    `DefaultPointcutAdvisor(Pointcut pointcut, Advice advice)` Create a DefaultPointcutAdvisor, specifying Pointcut and Advice.

  - ### org.springframework.aop.support.annotation中Pointcut的使用

    实现Pointcut的org.springframework.aop.support.annotation中的类
    限定符和类型 | 类和说明
    --- | ---
    `class` | `AnnotationMatchingPointcut` Simple Pointcut that looks for a specific Java 5 annotation being present on a `class` or `method`.