1.参考文档

Spring官网
https://my.oschina.net/OttoWu/blog/3304147 target和this的区别
https://blog.csdn.net/scos_sxb/article/details/100945389 各个表达式解析

2.表达式解析

  • excution
    • 官网(英文):For matching method execution join points. This is the primary pointcut designator to use when working with Spring AOP
    • 官方(翻译):为了匹配方法类型的执行连接点,这是主要的连接点指示器类型
    • 个人理解:指定某个方法或某些方法使用Aop
  • within
    • 官方(英文):Limits matching to join points within certain types (the execution of a method declared within a matching type when using Spring AOP).
    • 官方(翻译): 限制匹配的连接点在指定的类型下
    • 个人理解:可以指定某个包下,后某个类下的所有方法
  • this
    • 官方(英文):Limits matching to join points (the execution of methods when using Spring AOP) where the bean reference (Spring AOP proxy) is an instance of the given type
    • 官方(翻译):限制匹配到连接点(使用Spring AOP时方法的执行),其中bean引用(Spring AOP代理)是给定类型的一个实例
    • 个人理解:this中指定的类型是其代理对象的类型(或者说是代理对象继承的接口)
  • target
    • 官方(英文): Limits matching to join points (the execution of methods when using Spring AOP) where the target object (application object being proxied) is an instance of the given type.
    • 官方(翻译):限制匹配到连接点(使用Spring AOP时方法的执行),其中目标对象(被代理的应用程序对象)是给定类型的一个实例。
    • 个人理解:想要被代理的方法所在的类,只要是target指定的类的子类或本身,都可以代理
  • args
    • 官方(英文):Limits matching to join points (the execution of methods when using Spring AOP) where the arguments are instances of the given types
    • 官方(翻译):限制匹配到连接点(使用Spring AOP时方法的执行),其中参数是给定类型的实例
    • 个人理解:指定某个方法或某个类型下的方法后,可能对方法参数进行限制,这个args就可以帮你实现

  • @taget
    • 官方(英文):Limits matching to join points (the execution of methods when using Spring AOP) where the class of the executing object has an annotation of the given type.
    • 官方(翻译):限制匹配到连接点(使用Spring AOP时方法的执行),其中执行对象的类具有给定类型的注释
    • 个人理解:目标方法的类需要被 @target中注解标注(SpringBoot使用这个会报错)
  • @within
    • 官方(英文):Limits matching to join points within types that have the given annotation (the execution of methods declared in types with the given annotation when using Spring AOP)
    • 官方(翻译):限制匹配具有给定注释的类型内的连接点(使用Spring AOP时使用给定注释在类型中声明的方法的执行)
    • 个人理解:同@target,方法在被@within指定注解标注的类中
  • @args
    • 官方(英文): Limits matching to join points (the execution of methods when using Spring AOP) where the runtime type of the actual arguments passed have annotations of the given types
    • 官方(翻译):
    • 个人理解:注解中有某个参数
  • @annotation
    • 官方(英文):Limits matching to join points where the subject of the join point (the method being run in Spring AOP) has the given annotation.
    • 官方(翻译):
    • 个人理解:某个方法上标注了@annotation中规定的注解后生效,@within是规定方法所在类上的注解。@annotation是方法上的注解