代码之家  ›  专栏  ›  技术社区  ›  Amit Nath

在Spring AOP中使用接口的优点

  •  0
  • Amit Nath  · 技术社区  · 12 年前

    我在指南上读到了

    “使用Spring AOP时,始终使用接口,因此可以使用正常的AOP代理(而不是CGLIB)”

    这意味着什么?我对AOP有很好的理解,以前我自己也实现过AOP。但完全没有头绪。

    1 回复  |  直到 12 年前
        1
  •  0
  •   Gab    12 年前

    简单地说,有两种方法可以代理对象:

    • 动态:创建一个新对象,该对象实现与目标对象相同的接口,并将最后一个对象与代理逻辑一起封装

    • 静态:编译目标类时,将方面逻辑直接添加到编译的类中(cglib方式)

    动态代理只能应用于实现接口的对象,并且只有在使用接口引用实例时才会使用(这里建议使用),而静态代理可以应用于所有对象

    遵循spring准则将允许您使用任何方法(只需使用spring配置进行切换),而不是耦合到cglib。

    注意,静态代理允许应用代理逻辑,即使您从同一类中的另一个方法调用代理方法,而使用动态代理,调用必须来自外部。