12、AspectJ 切入点深度解析与应用

AspectJ 切入点深度解析与应用

1. 静态初始化切入点

在面向对象编程中,类的静态初始化是一个重要的环节。以 DVD 类为例,它是 Product 类的派生类。我们可以通过切入点来匹配 Product 和 DVD 类静态初始化器执行的时刻。示例代码如下:

pointcut staticInit() : staticinitialization(Product+);
before() : staticInit() {
    System.out.println(thisJoinPoint.toLongString());
}

上述代码的输出结果为:

staticinitialization(static Product.<clinit>)
staticinitialization(static DVD.<clinit>)
Location and count = New Store
Title = Better Title

从输出可以看出,Product 类的静态初始化器先于 DVD 类执行,这符合我们对继承关系的预期,因为 Product 是 DVD 的父类。

2. 基于程序文本的指示器

在某些情况下,我们需要将连接点限制在特定的类类型上,这时可以使用 target 或 this 指示器。但使用这些指示器时,我们对类中连接点的匹配位置控制有限。cflow 指示器能提供更多控制,但如果 cflow 中定义的连接点方法调用了同一对象或不同对象的其他方法,仍然可能匹

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值