AspectJ 中 Advice 的深入解析与应用
1. Advice 概述
在应用程序执行过程中,切入点(pointcuts)用于识别和命名有趣的“点”,而通知(advice)则是当应用程序到达连接点(join point)时执行的代码。Advice 是 AspectJ 的重要组成部分,它可以用于展示连接点是否到达、切入点是否选择了正确的连接点,以及切入点如何暴露连接点上下文。本文将深入探讨 Advice 的相关内容,具体包括:
- 如何定义 Advice
- 如何在 Advice 中使用连接点上下文
- Advice 与异常处理
- 不同类型的 Advice(before、after 和 around)
- 如何使用 around Advice 中的特殊 proceed 语法
- Advice 的优先级
2. 如何定义 Advice
2.1 为 System.out.println() 添加信息
在简单程序中, System.out.println
是向用户显示输出或检查应用程序流程的常用方式。然而,多次使用 System.out.println
会导致难以判断输出的来源和上下文。JDK 1.4 引入了日志类,JDK 1.3 用户可以依赖第三方日志框架,但这些解决方案都会增加复杂性。下面我们看看 AspectJ 如何解决 System.out.println
的局限性。
首先,我们设置一个测试代码:
pu