21、深入探究 @AspectJ 语法

深入探究 @AspectJ 语法

1. Java 兼容性

使用 @AspectJ 语法表达的切面可以使用常规的 javac 进行编译。这使得现有的集成开发环境(IDE)能更好地处理这类代码,因为它们可以将切面当作常规的 Java 代码。IDE 可以使用 Java 编译器编译代码,并在后续处理步骤中织入类和切面(也可以使用加载时织入器)。其他工具,如代码覆盖率工具(如 Clover)和代码分析器(例如 PMD 和 FindBugs)也能很好地工作,这是因为它们将代码视为普通的 Java 代码。显然,这些工具无法理解注解的语义,但它们不会对用 @Aspect 表达的切面产生抵触,在大多数情况下这就足够了。

不过,虽然可以使用 javac 编译 @AspectJ 切面的代码,但 Java 编译器无法理解与 @AspectJ 注解相关的语义。因此,仍然需要 AspectJ 织入器在构建时或加载时执行二进制织入。需要注意的是,如果使用 ajc 编译用 @AspectJ 语法编写的切面,它会在构建时进行织入,从而无需特殊的织入步骤。

2. 早期错误检测

@AspectJ 语法的设计目的是,即使在使用 javac 编译器进行编译时,也能尽早地给出尽可能多的错误和警告。这种设计要求尽可能使用 Java 构造,而不是使用隐藏在字符串中的表达式。

假设存在一种纯 Java 的 AspectJ 语法,它使用一个字符串,其值是用传统语法定义的相应切面的文本。例如,以下类可以用纯 Java 表示一个切面:

@Aspect("public aspect SQLPeformanceMoni
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值