AOP实现的关键在于代理模式,AOP代理主要分为静态代理和动态代理。静态代理的代表为AspectJ AOP;动态代理则以Spring AOP为代表。
- AspectJ AOP使用的
静态代理的增强
,所谓静态代理,就是AOP框架会在编译阶段生成AOP代理类,因此也称为编译时
增强,他会在编译阶段将AspectJ(切面)织入
到Java字节码中, 运行的时候就是增强之后的AOP对象。 - Spring AOP 使用的是
动态代理
,所谓的动态代理就是说AOP框架不会去修改字节码
,而是每次运行时在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全部方法
,并且在特定的切点做了增强处理,并回调原对象的方法。
评论