`

AspectJ Pointcut Expression

阅读更多

抄的,同一篇文章被大家抄来抄去,找不到原作者了,没法给链接,见谅

 

execution([modifiers-pattern] return-type-pattern [declaring-type-pattern] name-pattern(param-pattern)[throws-pattern])

 

"[]"括起来的部分是可选的。

 

返回类型 决定了方法的返回类型必须依次匹配一个连接点。使用的最频繁的返回类型模式是 *,它代表了匹配任意的返回类型。一个全称限定的类型名将只会匹配返回给定类型的方法。

名字模式 匹配的是方法名。可以使用 * 通配符作为所有或者部分命名模式。

参数模式 稍微有点复杂:() 匹配了一个不接受任何参数的方法,(..) 匹配了一个接受任意数量参数的方法,(*) 匹配了一个接受一个任何类型的参数的方法,(*,String) 匹配了一个接受两个参数的方法,第一个可以是任意类型,第二个则必须是String类型。

 

下面给出一些常见切入点表达式的例子。

  • 任意公共方法的执行:
    execution(public * *(..))
  • 任何一个以“set”开始的方法的执行:
    execution(* set*(..))
  • AccountService 接口的任意方法的执行:
    execution(* com.xyz.service.AccountService.*(..))
  • 定义在service包里的任意方法的执行:
    execution(* com.xyz.service.*.*(..))
  • 定义在service包或者子包里的任意方法的执行:
    execution(* com.xyz.service..*.*(..))
  • 在service包里的任意连接点(在Spring AOP中只是方法执行) :
    within(com.xyz.service.*)
  • 在service包或者子包里的任意连接点(在Spring AOP中只是方法执行) :
    within(com.xyz.service..*)
  • 实现了 AccountService 接口的代理对象的任意连接点(在Spring AOP中只是方法执行) :
    this(com.xyz.service.AccountService)
    'this'在binding form中用的更多:- 请常见以下讨论通知的章节中关于如何使得代理对象可以在通知体内访问到的部分。
  • 实现了 AccountService 接口的目标对象的任意连接点(在Spring AOP中只是方法执行) :
    target(com.xyz.service.AccountService)
    'target'在binding form中用的更多:- 请常见以下讨论通知的章节中关于如何使得目标对象可以在通知体内访问到的部分。
  • 任何一个只接受一个参数,且在运行时传入的参数实现了 Serializable 接口的连接点 (在Spring AOP中只是方法执行)
    args(java.io.Serializable)
    'args'在binding form中用的更多:- 请常见以下讨论通知的章节中关于如何使得方法参数可以在通知体内访问到的部分。 请注意在例子中给出的切入点不同于 execution(* *(java.io.Serializable)): args只有在动态运行时候传入参数是可序列化的(Serializable)才匹配,而execution 在传入参数的签名声明的类型实现了 Serializable 接口时候匹配。
  • 有一个 @Transactional 注解的目标对象中的任意连接点(在Spring AOP中只是方法执行)
    @target(org.springframework.transaction.annotation.Transactional)
    '@target' 也可以在binding form中使用:请常见以下讨论通知的章节中关于如何使得annotation对象可以在通知体内访问到的部分。
  • 任何一个目标对象声明的类型有一个 @Transactional 注解的连接点(在Spring AOP中只是方法执行)
    @within(org.springframework.transaction.annotation.Transactional)
    '@within'也可以在binding form中使用:- 请常见以下讨论通知的章节中关于如何使得annotation对象可以在通知体内访问到的部分。
  • 任何一个执行的方法有一个 @Transactional annotation的连接点(在Spring AOP中只是方法执行)
    @annotation(org.springframework.transaction.annotation.Transactional)
    '@annotation' 也可以在binding form中使用:- 请常见以下讨论通知的章节中关于如何使得annotation对象可以在通知体内访问到的部分。
  • 任何一个接受一个参数,并且传入的参数在运行时的类型实现了 @Classified annotation的连接点(在Spring AOP中只是方法执行)
    @args(com.xyz.security.Classified)
分享到:
评论

相关推荐

    aspectj-1.9.4的压缩包.rar

    aspectj-1.9.4.jar的资源下载,用于Spring中的关于aspect的注释,本来想在官网上下载,但是不知道怎么的,官网的反应炒鸡慢。,找了一大圈子,突然发现自己电脑上有,所以打算分享给大家

    aspectj各版本jar包

    aspectj-1.6至1.8各发布版本jar包,解决错误日志:error the @annotation pointcut expression is only supported at Java 5 compliance level or above

    org.aspectj.matcher.jar

    Java应用开发必不可少的jar包 org.aspectj.matcher.jar

    aspectj-1.8.5.jar

    jdk1.7 spring aop报错 请下载aspectj-1.8.5.jar 更换低版本程序,再不行下载最新的aspectjweaver.jar

    基于java的企业级应用开发:AspectJ开发.ppt

    /> <aop:config> <aop:aspect id="aspect" ref="myAspect"> <aop:pointcut expression="execution(* com.itheima.jdk.*.*(..))“ id="myPointCut" /> <aop:before method="myBefore" pointcut-ref="myPointCut" /> ...

    AspectJ 文档

    Aop框架AspectJ 的语法介绍JPoint Pointcut Signature

    can't find referenced pointcut

    spring-framework-3.1.1.RELEASE jdk1.7 环境下 can't find referenced pointcut 问题解决 换了对应的jar文件即可 aspectjrt.jar aspectj-1.6.6.jar aspectjweaver.jar

    aspectj-1.7.0.jar

    aspectj-1.7.0.jar aspectj的包

    Spring实现AOP的多种方式 切点函数

    里面包括4个例子:(1)Spring实现AOP方式之一:基于XML配置的Spring AOP (2)Spring实现AOP方式之二:使用注解配置 Spring AOP (3)Spring AOP : AspectJ Pointcut 切点 (4)Spring AOP : Advice 声明 (通知注解)

    spring源码导入所需aspectj包

    aspectj

    aspectj-1.8.10.jar

    aspectj-1.8.10.jar org.aspectj.lang.annotation.* org.aspectj.lang.annotation.Pointcut

    Aspectj驱动

    Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动

    org.aspectj,aspectj项目库(org.aspectj).zip

    org.aspectj,aspectj项目库(org.aspectj).zip,建筑物

    AspectJ Cookbook中文版

    许多开发人员都对aop感兴趣 —— 特别是对aspectj感兴趣,这个java编程语言的开源扩展明确支持aop方法。然而,尽管aspectj纳入在eclipse这个日益流行的java开源ide之内,但是找到一种实用、非理论的方式来学习这种...

    精通AspectJ_源代码

    精通AspectJ(面向方面的java编程指南)一书的示例代码。

    Aspectj

    Aspectj开发指南 博文链接:https://g007n.iteye.com/blog/249602

    aspectj-1.9.5.jar

    aspectj-1.9.5.jar 官网下载地址:https://www.eclipse.org/aspectj/downloads.php

    aspectj-1.6.9.jar

    aspectj架包,版本号:aspectj-1.6.9.jar

    aspectj-1.7.1.jar

    aspectj-1.7.1.jar

    aspectJ

    学习aspectJ,帮助学习面向方面的知识。

Global site tag (gtag.js) - Google Analytics