proxy 动态代理

    xiaoxiao2025-10-22  7

    1.简介

    :什么是代理?

    答:有一个对象a,你想用另一个对象b来做他的代理,那么b叫做代理对象,a叫做被代理对象

    :为什么要使用代理?

    答:所以我们不再直接跟a打交道,只需跟代理对象打交道即可。代理对象可以为我们提供额外的或不同的操作。

    按照代理对象的创建时期不同,可以分为两种。 静态代理,事先写好代理对象类,在程序发布前就已经存在了;动态代理,程序发布后,动态地创建代理对象。 动态代理又可分为JDK代理和CGLIB代理。

    :JDK代理和CGLIB代理有何不同?

    答:JDK代理,只能针对实现了接口的类生成代理。CGLIB代理,针对类实现代理,背后是继承。如果一个类是final的,那代理也无能为力。

    2.jdk代理

    2.1常用函数

    Object java.lang.reflect.Proxy. newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) 用来生成代理对象。 java.lang.reflect. InvocationHandler 接口。它有一个函数,见下: Object java.lang.reflect.InvocationHandler. invoke(Object proxy, Method method, Object[] args)  在对代理对象调用函数时,此函数被回调。返回值就是调用函数的返回值。

    2.2用法

    写一个类Handler实现InvocationHandler接口,它的一个成员变量作为被代理对象,一般通过构造函数传入。

    2.3代码示例

    3.cglib代理

    最新回复(0)