众所周知,AOP由Spring的CGLIB / JDK Proxy提供。编织是在运行时发生的,还是在编译时修改字节码以包含建议?
答案 0 :(得分:2)
根据Spring documentation,它在运行时完成:
Spring AOP默认使用AOP代理的标准J2SE动态代理。
由于Java的动态代理仅适用于接口:
Spring AOP也可以使用CGLIB代理。这是代理类而不是接口所必需的。
Spring文档对how the proxying works有很好的解释。
将此与AspectJ进行比较,编辑时会发生编织,有趣的是at various points:
编织过程本身可以在三个不同的时间之一进行:编译时,编译后时间和加载时间。
在AspectJ中: