但是如果用方面开发,那么就可以将这些行为表示为建议(advice),应用到所有匹配某个切点(pointcut)的操作。
您知道这个Website不应该突出显示,因此重新编写这个切点以排除不需要的匹配。
你可以把切入点想象成对你的编码的一个查询,用它来返回一系列的连接点。
切入点语言的复杂程度是不同AOP系统的一种区分元素。
在更改代码之后,构建良好的切入点不太可能停止匹配所需的位置。
AspectJ切入点表达式语言的强大不仅仅是关于复杂的结构。
我们不相信重新发明的轮子,而且定义我们自己的切入点表达语言是不合理的。
advice的默认方法签名接受一个参数,该参数提供关于中断的pointcut的信息。
这个切入点的通知目标永远不可能被错误调用,通过错误类型的参数,或者没有匹配的参数。
然而它更强大的能力是可以把任何(但可用的)截取程序应用到定义的切入点。
换句话说,系统的第一个版本使我们得到程序元素与切入点之间的一个N对一的耦合。
advice是aspect类中的一个方法,在pointcut处用它来做“某些不同的事件”。
在AspectJ中,这些地方都称为pointcut,在pointcut处所执行的代码称为advice。
注释,可以用它对建议进行注释,以抑制从切入点匹配发生的未检测警告。
一个子方面需要提供这种信息,也就是pointcut的形式。
那么,Pointcut就是一种语言构造,这种构造根据已定义的标准挑选一组joinpoint。
可以在适当的地方使用不同的主题变量,不必编写复杂的切入点代码。
切入点支持复合(composition),这就允许把简单的切入点组合成更复杂的切入点。
在本文的后面,我将重写这个切点以展示一些测试模式。
execution是一个原始的Pointcut(就象int是一种原始的Java类型)。
通知(advice)机制指定在程序执行过程中遇到匹配的切入点时应当采取什么行动。
如果可以编写一个切入点表达式,那么它会随着系统的发展而变得复杂,并且通常不很稳定。
在这种情况下,所需要的切入点可能会变得很难处理,从下面的例子中就可看到。
依赖于切入点而不是类型,要么不作任何假定,要么将上下文规格推迟到具体的子方面中。
然后,使用方面的项目就可以用切入点扩展它,切入点定义了将要应用的方面的适当范围。
不用像在清单1中那样枚举每一个方法,可以说明想要找的是一个更健壮的切点。
这意味着在这样一个对象中这个切入点只会选择对距离程序的调用。