博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
proxy 动态代理
阅读量:6982 次
发布时间:2019-06-27

本文共 710 字,大约阅读时间需要 2 分钟。

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

转载地址:http://axxpl.baihongyu.com/

你可能感兴趣的文章
windows下安装rabbitMQ
查看>>
20个优秀的移动(iPhone)网站设计案例
查看>>
week04_python函数返回值、作用域
查看>>
CentOS 6.3安装Nginx开启目录浏览、下载功能
查看>>
oracle登陆认证方式
查看>>
FMDB/SQLCipher数据库管理
查看>>
cocos_python
查看>>
关于安装oracle 11G R2 for Windows X64问题
查看>>
springmvc 重定向传递参数
查看>>
tomcat实现session集群及tomcat+memcached共享session存储(四)
查看>>
线性时间排序--桶排
查看>>
Three.js学习笔记
查看>>
ceph-deploy部署bluestore
查看>>
AIX修改系统时间 命令
查看>>
CI Weekly #22 | flow.ci 新版 iOS 构建流程的 4 大变化
查看>>
AOV网和AOE网
查看>>
IS-IS路由协议 总结
查看>>
划分VLAN,根据每个VLAN通过DHCP分配IP地址
查看>>
搜索引擎(0xFE)--- 用机器学习再谈排序
查看>>
OSChina 周五乱弹 —— 你开始怀疑人生了吗?
查看>>