Java 动态代理实现
2024-10-08 12:25:39
1、依赖
java.lang.reflect.Proxy - 提供了静态方法去创建动态代理类的实例;
Interface InvocationHandler - 一个代理实例调用处理程序实现的接口
2、编写代理实例处理类
public class InvocationHandlerProxy implements InvocationHandler {
//被代理的接口
private Object target; //获取代理角色
public void setTarget(Object target){
this.target = target;
} //获得一个代理类
public Object getProxy(){
return Proxy.newProxyInstance(this.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
} //处理代理实例,并返回结果
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
log();
Object o = method.invoke(this.target, args);
return o;
} private void log(){
System.out.println("执行前日志");
}
}
3、测试
//真实角色-被代理对象
Landlord landlord = new Landlord();
//实例化代理实例类
InvocationHandlerProxy handlerProxy = new InvocationHandlerProxy();
//设置要代理的对象
handlerProxy.setTarget(landlord);
//生成代理类InvocationHandlerProxy,以被代理对象的接口强转
Sent proxy = (Sent) handlerProxy.getProxy();
//代理真实操作
proxy.rest();
最新文章
- 妙味课堂——HTML+CSS基础笔记
- angularjs 嵌套控制器,子控制器访问父控制器
- SharpDevelop学习笔记(5)—— AddIns系统详解
- python 安装mysql-python模块
- [codeforces 509]C. Sums of Digits
- 使用jquery时弹出[object HTMLImageElement]问题
- Python's Exception 层级结构
- C# Code for Downloading Stock Symbols z
- 计数dp-hdu-4054-Number String
- CSS3/HTML5实现漂亮的分步骤注册登录表单
- C# 封装-属性
- LB 负载均衡的层次结构(转)
- ASP.NET Core 运行原理解剖[3]:Middleware-请求管道的构成
- 怎么知道我的laravel 是几版本的
- probabilistic robotics_Kalman filter(一)
- 【细小碎的oi小知识点总结贴】不定时更新(显然也没人看qwq)
- use this method get wifi from notebook
- servlet_4
- mongodb数据库安装及常见操作
- Java -- POI -- 入门使用以及简单介绍
热门文章
- Java Day2(下)
- 2019牛客多校第八场A All-one Matrices 悬线法,单调栈待补
- django Warning: (3135, ";'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes
- [AtCoder Code Festival 2017 QualB C/At3574] 3 Steps - 二分图染色,结论
- 解决git速度太慢的问题,亲测有效
- .NET知识梳理——4.特性Attribute
- Vue组件中的Data为什么是函数。
- Spring解决bean之间的循环依赖
- Android监听消息通知栏点击事件
- Linux sed识别HTML标签