但是如果用方面开发,那么就可以将这些行为表示为建议(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中那样枚举每一个方法,可以说明想要找的是一个更健壮的切点。
这意味着在这样一个对象中这个切入点只会选择对距离程序的调用。
这次不是扩展一个抽象类,而是编写mock目标,以使它匹配要测试的方面上的一个切点。
1·The pointcut required in these situations can get unwieldy, as you can see for yourself in the following example.
在这种情况下,所需要的切入点可能会变得很难处理,从下面的例子中就可看到。
2·This is correct because that's where the advice is; however in this situation the pointcut in the concrete aspect is controlling the application of advice, and it is that which is often of interest.
这样做是正确的,因为这就是通知所在的位置;但是在这种情况下,具体方面中的切入点控制着通知的应用,而这常常是一个很有趣的地方。
3·A couple of things that are missing -- including quick fixes in aspects and content-assist of certain things such as pointcut names -- will be addressed by future versions of AJDT.
也有一些事被遗漏,其中包括方面中的快速修复和某些事情的内容辅助(例如切入点名称),这些将由 AJDT 未来的版本解决。
4·Instead of using one subaspect for my whole system, I can use many subaspects -- one per subsystem -- making it possible to write a relatively stable pointcut.
不是在 整个系统中使用一个子方面,而是使用许多子方面 —— 每个子系统一个子方面,这使得编写相对稳定的切入点成为可能。
5·The more mature the pointcut language, the easier it is to write robust pointcuts.
切入点语言越成熟, 越容易编写健壮的切入点。