动态代理之 CGLIB 动态代理
CGLIB 动态代理 之前我们详细介绍了 JDK 自身的 API 所提供的动态代理的实现,也说明了它存在的缺陷,那就是只能为接口中的方法做代理,被代理类自身和父类的方法都不能被代理。 CGLIB 就是为了解决这个问题而生的,高新能的,底层基于 ASM 框架的一个代码生成框架,它完美的解决了 JDK 版本的动态代理只能为接口中的方法做代理的问题。 例子 我们还是先来看一个例子。首先定义一个 Person 接口,它能够讲话和跑步,在定一个一个 Father 类,它定义了一个 sayHello 方法。 public class Father{ public void sayHello(){ System.out.println("hi somebody...."); } } public interface Person{ void speak(); void run(); } 下面是我们的被代理类,它本身继承自 Father 类,并且实现 Person 接口。 public class Student extends Father implements Person{ // student 类自己实现的方法 public void study(){ System.out.println("i can study...."); } @Override public void speak(