jdk 动态代理使用
程序员文章站
2022-03-15 13:57:19
...
public interface User { void save(); }
public class UserImpl implements User { public void save() { System.out.println("save"); } public static void main(String[] args) { UserHandler handler=new UserHandler(); User service=(User) handler.bind(new UserImpl()); service.save(); } }
public class UserHandler implements InvocationHandler { private Object target; public Object bind(Object target){ this.target=target; return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(),this); } public Object invoke(Object proxy, Method method, Object[] args)throws Throwable { Object result = null; long start = System.currentTimeMillis(); result = method.invoke(target, args); long end=System.currentTimeMillis(); System.out.println("方法耗时=="+(end-start)/1000); return result; } }
PS:原理还没彻底搞懂,主要反射那块,抽空再深入研究一下,先记录。
上一篇: eclipse延长tomcat启动时间
下一篇: 解决dubbo配置文件报红叉
推荐阅读
-
Linux下怎么切换使用两个版本的JDK
-
使用nginx代理gogs遇到推送代码错误的问题(RPC failed; HTTP 413 curl 22 The requested URL returned error: 413)
-
PHP命名空间(namespace)的动态访问及使用技巧
-
iOS开发的UI制作中动态和静态单元格的基本使用教程
-
ajax 动态传递jsp等页面使用id辨识传递对象
-
C#使用动态规划解决0-1背包问题实例分析
-
squid正向代理使用
-
深入学习Java 动态代理
-
oracle中动态SQL使用详细介绍
-
Linux 安装JDK Tomcat MySQL的教程(使用Mac远程访问)