面向方面编程语言中如何使用切入点将功能添加到现有程序中?
根据我的理解,从这篇维基百科文章 - http://en.wikipedia.org/wiki/Pointcut
切入点被放置在一段代码中的特定位置,当达到该点时,基于切入点的评估,可以在代码中的某个特定点处基于对该切入点的评估执行更多代码。切入点。这是正确的理解吗?
如果是这样,那么就会增加功能,因为程序员可以根据评估执行不同的代码。
答案 0 :(得分:2)
例如,我有一个包含许多服务对象的应用程序,我想为每个方法计时。使用AspectJ表示法:
class MyAspect
{
@Around("execution(public * my.service.package.*(..))")
public Object aroundAdvice(JoinPoint jp)
{
// start timer
Object o = jp.proceed();
// stop timer, etc.
return o;
}
}
这里,“执行(public * my.service.package。*(..))”是切入点:它指定将为其执行建议的连接点集合(所有方法的执行)服务包中的类。)
答案 1 :(得分:0)
Pointcut是连接建议(“纯”代码片段,不关心它将在何处运行)和连接点(执行点,如方法调用或返回,不关心将运行什么代码)
我将调用切入点作为谓词函数,该函数选择哪些连接点将与当前方面一起使用(谓词为每个建议的每个连接点赋予真/假)。