书山有路勤为径,学海无涯苦作舟
一. 捕获何时访问对象的属性 使用get(Signature)切入点。get(Signature)切入点的语法如下: pointcut <pointcut name>(<any values to be picked up>) : get(<optional modifier> <type> <class>.<field>); get(Signature)具有4个关键特征: 1.get(Signature)切入点会触发直接在其中(而不仅仅是在访问器方法的调用上)访问属性的通知。 2.get(Signature)切入点不能捕获对静态属性的访问,尽管从AspectJ的语法角度讲以这种方式定义切入点是完全合法的。 3.Signature必须解析成特定类的属性。 4.Signature可以包含通配符,用于选择不同属性上的一系列连接点。
你可能期待类使用static和final关键字定义一个常量属性,这样,在访问这个常量时你就可能使用get(Signature)切入点来捕获。
二. 捕获访问的字段值 使用after returning(<ReturnValue>)形式的通知。它在声明的returning()部分中带有一个标识符,用于包含访问过的值。
三. 捕获何时修改对象的字段 使用set(Signature)切入点。set(Signature)切入点的语法如下: pointcut <pointcut name>(<any values to be picked up>) : set(<optional modifier> <type> <class>.<field>); set(Signature)具有4个关键特征: 1.set(Signature)切入点在修改字段时触发。 2.set(Signature)切入点不能捕获对静态字段的修改,尽管从AspectJ的语法角度讲以这种方式定义切入点是完全合法的。 3.Signature必须解析成特定类的属性。 4.Signature可以包含通配符,用于选择不同属性上的一系列连接点。
四. 在修改字段时捕获它的值 结合使用args([Types | Identifiers])切入点和set(Signature)切入点,展示字段的新值,该字段被设置成切入点上的标识符,可将其传递给相应的通知。
posted on 2008-08-22 10:43 Brian 阅读(1172) 评论(0) 编辑 收藏 所属分类: 《AspectJ Cookbook》读书笔记