1、静态AOP
方式:
在编译时修改程序的字节码。
优点:
所有针对方面的功能都在编译时织入到程序的字节码中,运行效率高。
缺点:
所有针对方面的功能都在编译时确定,你针对方面功能的任何修改,都需要重新编译程序。
实现:
AspectJ
2、动态AOP
方式:
在运行时动态织入方面功能,通过创建动态代理的方式实现。
优点:
所有针对方面的功能都在运行时动态织入,你针对方面功能的任何修改,都会立即生效,不需要重新编译程序。
确定:
所有功能方面的功能都在运行时动态织入,应用会损失一定的性能。
实现:
JDK 代理
CGLIB 代理