spring 09 AOP 实现之 ajc 编译器 / agent 类加载

AOP 实现之 ajc 编译器

aspectj 编译器

  1. 编译器也能修改 class 实现增强,直接通过修改字节码实现增强。
  2. 编译器增强能突破代理仅能通过方法重写增强的限制:可以对构造方法、静态方法等实现增强
    3.在编译阶段进行增强

注意

  • 版本选择了 java 8, 因为目前的 aspectj-maven-plugin 1.14.0 最高只支持到 java 16
  • 一定要用 maven 的 compile 来编译, idea 不会调用 ajc 编译器

AOP 实现之 agent 类加载

类加载时可以通过 agent 修改 class 实现增强
在被增强方法内调用另一个被增强的方法(这是通过 this.方法调用),另一个方法依旧可以被增强,这是代理达不到的(代理是通过代理对象调用增强的方法来实现),因为直接修改了另一个方法的字节码,所以可以直接用本对象(this)增强。

posted @ 2022-06-20 17:12  xy7112  阅读(95)  评论(0)    收藏  举报