JDK/CGLib动态代理
时间: 2023-09-10 11:14:58 浏览: 111
jdk和cglib实现动态代理
JDK(Java Development Kit)和 CGLib(Code Generation Library)都是在 Java 中用于实现动态代理的工具。
JDK 动态代理是 Java 标准库提供的功能,也是最常用的动态代理方式之一。它基于接口进行代理,即只能代理实现了接口的类。使用 JDK 动态代理,你需要定义一个接口,并且创建一个实现了 InvocationHandler 接口的代理类。InvocationHandler 接口中有一个 invoke 方法,该方法在代理对象上调用方法时会被触发,并且你可以在该方法中对原始方法进行增强或者添加一些额外的逻辑。
CGLib 动态代理是一个第三方库,它可以代理没有实现接口的类。与 JDK 动态代理不同,CGLib 在运行时生成目标类的子类作为代理类,并重写父类中的方法来实现增强逻辑。CGLib 动态代理不需要目标类实现任何接口,因此在某些情况下更加灵活。
无论你选择使用 JDK 动态代理还是 CGLib 动态代理,它们都可以帮助你在运行时动态地生成代理类,并且在代理类中添加额外的逻辑来实现 AOP(面向切面编程)等功能。具体选择哪种方式取决于你的需求和场景。
阅读全文