动态代理是什么

动态代理是什么?

Java的动态代理是一种 在运行时动态创建代理对象的机制,
主要用于在不修改原始类的情况下 对方法调用进行拦截和增强

Java动态代理主要分为两种类型:

基于接口的代理(JDK动态代理):

这种类型的代理要求目标对象必须实现至少一个接口
Java动态代理会创建一个实现了相同接口的代理类,然后在运行时动态生成该类的实例。

这种代理的实现核心是java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口。
每一个动态代理类都必须实现InvocationHandler接口,并且每个代理类的实例都关联到一个handler。
当通过代理对象调用一个方法时,这个方法的调用会被转发为由InvocationHandler接口的invoke()方法来进行调用。

基于类的代理(CGLIB动态代理):

CGLIB(Code Generation Library)是一个强大的高性能的代码生成库,它可以在运行时动态生成一个目标类的子类。
CGLIB代理不需要目标类实现接口,而是通过继承的方式创建代理类。因此,如果目标对象没有实现任何接口,可以使用CGLIB来创建动态代理。

posted @ 2025-04-22 21:31  kuki'  阅读(4)  评论(0)    收藏  举报