深入探究 @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
超级会员免费看
订阅专栏 解锁全文
43

被折叠的 条评论
为什么被折叠?



