扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共4页)
该文是我读AspectJ in Action时的一些学习笔记和自己的一些学习总结,当时是用英文记下的(因为书是英文的嘛,嘿嘿,而且个人认为看英文文档更能理解的透彻一些,毕竟是作者的原话嘛),现在放到网上和大家共享,并翻译成中文,如果哪处我翻译的不够恰当,理解的不够准确,请各位看英文部分以获得更准确的信息并给予我指正。(ah011@163.com)
Pointcuts
public pointcut accountOperations :call(*Account.*(..))
这是定义了一个pointcut,其中:
public 是access specifer
pointcut 是keyword
accountOperations 是poincut name
call是pointcut type;;pointcut能与其他pointcut通过或(||)、与(&&)以及非(!)操作符联合
Account是signature
l 常用pointcut类型
1) call
2) execution
3) target
4) args
5) within
6) cflow
l 基本概念
如果对上面的概念不是特别了解没有关系,下面就介绍一些基本的概念:
Joint Point
A join point is an identifiable point in the execution of a program. It could be a call to a method or an assignment to a member of an object.
join point 是程序执行过程中可以被识别的点。它可以是对一个函数的调用或是对象的一个属性。(注:spring的AOP只能做到对函数调用的拦截)
例子:
Public class Account
{
void credit(float amount)
{
_balance += amount;
}
}
这个例子中的join point包括Account类中执行credit()方法和对_balance的操作。
Pointcut
A pointcut is a program construct that selects join points and collects context at those points. For example, a pointcut can select a join point that is a call to a method, and it could also capture the method’s context, such as the target object on which the method was called and the method’s arguments.
We can write a pointcut that will capture the execution of the credit() method in the Account class shown earlier:
execution(void Account.credit(float))
To understand the difference between a join point and pointcut, think of pointcuts as specifying the weaving rules and join points as situations satisfying those rules.
pointcut 是一种程序结构,它用于选取join point并收集这些point的上下文信息。举例来说,pointcut可以是一个调用方法的join point,并且它能捕获这个方法的上下文信息,例如调用这个方法的目标对象和该方法的属性。
我们可以写一个pointcut,它将可以捕获前面Account类中credit()方法的执行:
execution(void Account.credit(float))
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者