书山有路勤为径,学海无涯苦作舟
切入点定义设计中的常用方式是:基于关注的程序作用域,限制捕获连接点的范围。这可以让你即使控制在进一步的切入点定义中将会涉及哪些连接点。 本章中的切入点相当容易理解,并且他们是AspectJ中一些常用的元素。例如,广泛使用的within(TypePattern)切入点将以!within(%THIS_ASPECT%)形式使用它。这个AspectJ术语限制了当前方面之外的每个连接点的作用域,从而可以防止通知触发对相同通知块的递归调用,并导致一个无限循环。 一. 捕获特定类中的所有连接点 使用within(TypePattern)切入点,利用TypePattern指定特定类类型模式,within(TypePattern)切入点的语法如下: pointcut <pointcut name>(<any values to be picked up>) : within(<class>);
within(TypePattern)切入点具有3个关键特征: 1.within(TypePattern)切入点捕获指定类作用域中的所有连接点。 2.within(TypePattern)切入点极少孤立使用。相反,它通常与切入点结合使用,用于减少将触发附带通知的连接点。 3.TypePattern可以包含通配符,用于选择不同类上的一系列连接点。
二. 捕获特定包中的所有连接点 within(TypePattern)切入点提供一种有用的手段,它使用通配符在出现在每个类中的连接点中指定一个关注。可以在TypePattern中使用合适的通配符,从切入点逻辑的余下部分中包含或排除连接点的整个包。
三. 捕获特定方法内的所有连接点 使用withincode(Signature)切入点。withincode(Signature)切入点的语法如下: pointcut <pointcut name>(<any values to be picked up>) : withincode(<modifier> <class>.<method>(<paramter types>));
withincode(Signature)切入点有3个关键特征: 1. withincode(Signature)切入点指定了特定方法的本地作用域内的所有连接点。 2. withincode(Signature)切入点极少孤立使用。相反,他通常与其他切入点结合使用,用于减少将触发附带通知的连接点。 3. Signaure可以包含通配符,用于选择不同类的不同方法上的一系列连接点。
posted on 2008-08-25 10:32 Brian 阅读(330) 评论(0) 编辑 收藏 所属分类: 《AspectJ Cookbook》读书笔记