zoukankan      html  css  js  c++  java
  • Spring AOP AspectJ Pointcut 表达式例子

    主要来源:http://howtodoinjava.com/spring/spring-aop/writing-spring-aop-aspectj-pointcut-expressions-with-examples/

    1. 方法标签匹配方式

    假设定义了接口EmployeeManager接口。

    1)

    execution(* com.howtodoinjava.EmployeeManager.*( .. ))
    

      以上切入点表达式可以匹配EmployeeManger接口中所有的方法。

    2)

    当切面方法和EmployeeManager接口在相同的包内,如果切入点表达式匹配所有所有方法,则表达式可以改成:

    execution(* EmployeeManager.*( .. ))
    

    3)匹配EmployeeManager接口的所有public方法。

    execution(public * EmployeeManager.*(..))
    

    4) 匹配EmployeeManager接口中权限为public并返回类型为EmployeeDTO的所有方法。

    execution(public EmployeeDTO EmployeeManager.*(..))
    

    5) 匹配EmployeeManager接口中权限为public并返回类型为EmployeeDTO,第一个参数为EmployeeDTO类型的所有方法。

    execution(public EmployeeDTO EmployeeManager.*(EmployeeDTO, ..))
    

    6) 匹配EmployeeManager接口中权限为public、返回类型为EmployeeDTO,参数明确定义为EmployeeDTO,Integer的所有方法。

    execution(public EmployeeDTO EmployeeManager.*(EmployeeDTO, Integer))
    

    2. 类型标签匹配模式

    1)匹配在com.howtodoinjava包下所有类型中所有的方法。

    within(com.howtodoinjava.*)
    

    2)匹配在com.howtodoinjava包以及其子包下所有类型中所有的方法。

    within(com.howtodoinjava..*)
    

    3)匹配其他包一个类下的所有方法。

    within(com.howtodoinjava.EmployeeManagerImpl)
    

    4)匹配同一个包下一个类下的所有方法。

    within(EmployeeManagerImpl)
    

    5)匹配一个接口下的所有继承者的所有方法。

    within(EmployeeManagerImpl+)
    

    3. bean名字匹配模式

    匹配所有以Manager结尾的beans中的所有方法。

    bean(*Manager)
    

    4. 切入点表达式拼接

    在AspectJ中,切入点表达式可以通过&&,||,!等操作符进行拼接。

    bean(*Manager) || bean(*DAO)
    

     上述这个例子表示匹配以Manager结尾或者以DAO结尾的beans中所有的方法。

  • 相关阅读:
    苹果开发者账号多少钱?个人/公司/企业申请费用及怎么选【都有】
    uniapp ios真机调试【亲测有效】
    Uniapp---IOS打包证书私钥密码怎么获取?
    微信小程序地图计算两个点之间的距离
    各大地理坐标系互转
    解决mac下vscode等应用中vim光标无法快速移动
    python 脚本如何在后代运行并记录标准输出
    wkhtmltox 在Linux上安装
    shell中的##*,%%*问题
    matplotlib、seaborn 展示中文字体
  • 原文地址:https://www.cnblogs.com/Eunice-mogu/p/5261008.html
Copyright © 2011-2022 走看看