proxy 动态代理

简介: 1.简介 问:什么是代理? 答:有一个对象a,你想用另一个对象b来做他的代理,那么b叫做代理对象,a叫做被代理对象。 问:为什么要使用代理? 答:所以我们不再直接跟a打交道,只需跟代理对象打交道即可。代理对象可以为我们提供额外的或不同的操作。 按照代理对象的创建时期不同,可以分为两种。 静态代理,事先写好代理对象类,在程序发布前就已经存在了;动态代理,程序发布后,动态地创建代理

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代理


目录
相关文章
|
7月前
|
数据采集 SEO
动态代理IP和静态代理,到底有什么区别?
静态代理IP提供固定IP,适用于长期稳定连接,如服务器管理和账户维护,具有较高稳定性和安全性。动态代理IP则会定期更换IP,适合网络爬虫和需要模拟全球用户行为的场景,提供灵活性和广泛覆盖。选择代理IP应根据业务需求、预算和法规要求,确保合法合规使用。
|
安全 Java
架构系列——java动态代理中的InvocationHandler和Proxy
架构系列——java动态代理中的InvocationHandler和Proxy
Proxy(代理)和Reflect(反射)
23. Proxy(代理)和Reflect(反射) 1. Proxy: Proxy 是一个代理器,它可以拦截对目标对象的各种操作,包括读取属性、设置属性、函数调用等等。通过使用 Proxy,我们可以在这些操作前后注入自定义逻辑,对这些操作进行拦截、修改、记录等等。这使得我们可以更好地控制对象的行为,实现一些高级的功能。
|
设计模式 SQL 安全
Java设计模式-代理模式(Proxy)
Java设计模式-代理模式(Proxy)
|
Java 索引 Spring
es6 代理(Reflect)和反射(Proxy)的学习总结
es6 代理(Reflect)和反射(Proxy)的学习总结
|
存储 设计模式 Java
Proxy动态代理机制详解
代理模式给某一个(目标)对象提供一个代理对象,并由代理对象持有目标对象的引用,所谓代理,就是一个对象代表另一个对象执行相应的动作程序。
104 0
Proxy动态代理机制详解
|
Java
面试官:你说你懂动态代理,那你知道为什么JDK中的代理类都要继承Proxy吗?
之前我已经写过了关于动态代理的两篇文章,本来以为这块应该没啥问题,没想到今天又被难住了… 太难了!!! 之前文章的链接: 1,动态代理学习(一)自己动手模拟JDK动态代理、 2.动态代理学习(二)JDK动态代理源码分析
230 0
|
设计模式 缓存 Java
浅谈JAVA设计模式之——代理模式(proxy)
为其他对象提供一种代理以控制对这个对象的访问。
133 0
浅谈JAVA设计模式之——代理模式(proxy)