【参考】《AspectJ?in?Acton?2nd?Edition》
【说明】本文仅总结一些概念
?
1?连接点模型(join?point?model)
连接点模型包括两个部分:
joinpoints:程序的执行点。
pointcuts:选择joinpoints的机制。
概念:
join?point:系统中可标志的程序的执行点,如方法的调用,字段的访问,for循环或者是if 语句都是joinpoint(AspectJ只支持前两个)
pointcut:用于选择joinpoint和收集连接点上下文的程序元素.
?
2?连接点分类:
Asper支持一下连接点分类:
1)Method?join?points:两种:execution和call
??方法执行连接点包括:方法体内的所有可执行块
??方法调用连接点包括:方法调用处(注意:构成方法参数的那段代码不是该连接点的一部分)
2)Constructor?join?points:
??除了它代表构造方法外,和Method?join?points?完全类似,也分为call和execution两种
3)Field?access?join?points:分为read?access?和?write?access两种
??注意:AspectJ提供?instance??variables和class??variables?(static?fields)的field连接点,不提供局部变量的连接点
4)Exception-handler?join?points:类型:handler
??连接点包括:try-catch语句的整个catch块
5)Class-initiallization?join?points:类型:class?initialization
??该连接点包括:类的加载、类的所有static语句块[若有的话]
6)Object-initialization?join?points:类型:object?initialization
??连接点包括:从父类构造器的返回到第一个被调用的构造器的结束
??用途:提供额外的初始化工作,比如依赖注入等。spring的domain-object依赖注入(@configurable)就是通过这种方式实现的
7)Object?pre-initialization:类型:Object?pre-initialization
??连接点包括:从第一个构造器的调用到父构造器的开始
??说明:很少使用
8)advice?execution?join?points:类型:execution
??说明:不建议使用
?
<!--EndFragment-->