当前位置: 代码迷 >> ASP >> AspectJ学习札记之pointcut
  详细解决方案

AspectJ学习札记之pointcut

热度:89   发布时间:2012-12-28 10:29:05.0
AspectJ学习笔记之pointcut

参考】《AspectJ?in?Acton?2nd?Edition

【说明】本文仅总结一些概念

?

1?连接点模型(join?point?model

连接点模型包括两个部分:
joinpoints:程序的执行点
pointcuts:选择joinpoints的机制

概念:
join?point:系统中可标志的程序的执行点,如方法的调用,字段的访问,for循环或者是if 语句都是joinpoint(AspectJ只支持前两个)
pointcut:用于选择joinpoint和收集连接点上下文的程序元素.

?

2?连接点分类:

Asper支持一下连接点分类:

1Method?join?points:两种:executioncall
??方法执行连接点包括:方法体内的所有可执行块
??方法调用连接点包括:方法调用处(注意:构成方法参数的那段代码不是该连接点的一部分)

2Constructor?join?points
??除了它代表构造方法外,和Method?join?points?完全类似,也分为callexecution两种

3Field?access?join?points:分为read?access?和?write?access两种
??注意:AspectJ提供?instance??variablesclass??variables?(static?fields)field连接点,不提供局部变量的连接点

4Exception-handler?join?points:类型:handler
??连接点包括:try-catch语句的整个catch

5Class-initiallization?join?points:类型:class?initialization
??该连接点包括:类的加载、类的所有static语句块[若有的话]

6Object-initialization?join?points:类型:object?initialization
??连接点包括:从父类构造器的返回到第一个被调用的构造器的结束
??用途:提供额外的初始化工作,比如依赖注入等。springdomain-object依赖注入(@configurable)就是通过这种方式实现的
7Object?pre-initialization:类型:Object?pre-initialization

??连接点包括:从第一个构造器的调用到父构造器的开始
??说明:很少使用

8advice?execution?join?points:类型:execution
??说明:不建议使用

?

<!--EndFragment-->