【发布时间】:2018-08-11 00:45:48
【问题描述】:
我在阅读一些关于 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()方法。
【问题讨论】:
-
这取决于——你是如何注入 bean 的?
标签: java spring proxy spring-aop cglib