我在指南中读到了这个
“当使用Spring AOP时总是使用接口,因此可以使用正常的AOP代理(而不是CGLIB)”
可能意味着什么?我对AOP非常了解并且之前已经实现了AOP。但完全没有线索。
答案 0 :(得分:0)
简单地说,代理对象有两种方式:
dynamic:您创建一个新对象,该对象实现与目标对象相同的接口,并使用代理逻辑再次封装此对象
static:编译目标类时,将方面逻辑直接添加到已编译的类中(cglib方式)
动态代理只能应用于实现接口的对象,并且只有在使用接口引用实例时才会使用(这里建议使用),而静态代理可以应用于所有内容
遵循弹簧指南将允许您使用任何方法(您只需使用弹簧配置进行切换),而不是耦合到cglib。
注意,即使从同一个类中的另一个方法调用代理方法,静态代理也允许应用代理逻辑,而使用动态代理时,调用必须来自外部。