切入点和面向方面编程

时间:2010-12-07 23:11:09

标签: aop pointcuts

面向方面编程语言中如何使用切入点将功能添加到现有程序中?

根据我的理解,从这篇维基百科文章 - http://en.wikipedia.org/wiki/Pointcut

切入点被放置在一段代码中的特定位置,当达到该点时,基于切入点的评估,可以在代码中的某个特定点处基于对该切入点的评估执行更多代码。切入点。这是正确的理解吗?

如果是这样,那么就会增加功能,因为程序员可以根据评估执行不同的代码。

2 个答案:

答案 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是连接建议(“纯”代码片段,不关心它将在何处运行)和连接点(执行点,如方法调用或返回,不关心将运行什么代码)

我将调用切入点作为谓词函数,该函数选择哪些连接点将与当前方面一起使用(谓词为每个建议的每个连接点赋予真/假)。