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是方法上的注解