猿问

Spring AOP 什么时候使用 CGLIB 代理?

我正在阅读一些关于 Spring AOP 的文章并遇到了这个:


AOP 代理:AOP 创建的用于实现方面契约的对象。在 Spring 中,代理对象可以是 JDK 动态代理或 CGLIB 代理。默认情况下,代理对象将是 JDK 动态代理,被代理的对象必须实现一个接口,该接口也将由代理对象实现。但是像 CGLIB 这样的库也可以通过子类化来创建代理,因此不需要接口。


你能不能看看下面的结构,想象一下我们要建议的bar()方法。


public interface Foo {

    void foo();

}


public class FooImpl implements Foo {


    @Override

    public void foo() {

        System.out.println("");

    }


    public void bar() {

        System.out.println("");

    }


}

这是否意味着在这种情况下将使用 CGLIB 代理?由于 JDK 动态代理无法实现任何接口以覆盖bar()方法。


慕桂英546537
浏览 376回答 3
3回答

HUH函数

请参阅Spring 文档中的AOP 代理:Spring AOP 默认为 AOP 代理使用标准的 JDK 动态代理。这允许代理任何接口(或接口集)。Spring AOP 也可以使用 CGLIB 代理。这是代理类而不是接口所必需的。默认情况下,如果业务对象未实现接口,则使用 CGLIB。
随时随地看视频慕课网APP

相关分类

Java
我要回答