动态代理

JVM 动态代理

  • JVM 动态代理(基于接口)

    • 只能代理有接口的类,通过实现接口生成代理类。

    • Spring 默认使用 JDK 动态代理。

  • CGLib(Code Generation Library) 代理(基于子类继承)

    • 通过继承目标类生成子类,没接口也能代理。

    • spring 默认使用 JVM动态代理,当目标类无接口,或启用 proxyTargetClass=true 时,Spring 使用 CGLib。

上代码

public interface HelloWorld {
    void sayHello(String name);
}
public class HelloWorldImpl implements HelloWorld {
    @Override
    public void sayHello(String name) {
        System.out.println("Hello " + name);
    }
}

Last updated

Was this helpful?