首页 / JAVA / 理解原生JAVA AOP思想
理解原生JAVA AOP思想
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了理解原生JAVA AOP思想,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2126字,纯文字阅读大概需要4分钟。
内容图文
![理解原生JAVA AOP思想](/upload/InfoBanner/zyjiaocheng/786/81ff21ab66a749cfbacc13d9d15d0699.jpg)
一路走来,遇到好些后生来问我:AOP该如何理解?我一开始是丢个度娘给他们的。但是现在回头想想,培养新人不能这么草率,丢个度娘给他们,让他们花了大量的时间去阅读无用的文章外,一不小心还走火入魔了。所以现在我正儿八经的写了个手稿,以便做以后的相关问题回答。文章有些瑕疵,请咬文嚼字的大牛们忽略,本文目的在于解释AOP到底有个锤子用。
上安利。。。说错,是案例:在一个夜黑风高的晚上,张三胖突然接到张大胖的电话,说咱们的视频网站响应延时太长了。你想办法监测一下是哪里的代码导致延时巨大~~~。
张三胖打开代码,关键代码主要在张五胖写的Video类里面:
public interface IVideo { List get(); Object getInfo(); }
public class JapanVideo implements IVideo { @Override public List get() { try { Thread.sleep(1024); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("一大堆正规的小视频列表~~~~~"); return null; } @Override public Object getInfo() { try { Thread.sleep(3221); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("导演:XXX;主演:苍老师~~~~~"); return null; } }
调用方:
IVideo video = new JapanVideo(); video.get(); video.getInfo();
张三胖不想去修改张五胖的代码。所以张三胖就考虑在每个方法执行前后增加时间计算。如果类里面的方法不多,这样是可以的。但是如果Video有上百个方法,那怎么搞?这时候AOP就来搞事情了。
public class AOPHandle implements InvocationHandler { private Object obj; public AOPHandle(Object obj){ this.obj = obj; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { //方法返回值 System.out.println("开始执行:"+System.currentTimeMillis()); //反射调用方法 Object ret=method.invoke(obj, args); //声明结束 System.out.println("开始完毕:"+System.currentTimeMillis()); //返回反射调用方法的返回值 return ret; } }
原调用方修改为:
AOPHandle aopHandle = new AOPHandle(new JapanVideo()); IVideo video = (IVideo) Proxy.newProxyInstance( JapanVideo.class.getClassLoader(), new Class[] { IVideo.class }, aopHandle); video.get(); System.out.println("\n"); video.getInfo();
这样就能检测到每个方法的消耗的时间了。
这只是一个小例子,其实AOP能做的不仅仅是这些。如:
日志记录,跟踪,优化和监控 事务的处理 系统统一的认证、权限管理等 应用系统的异常捕捉及处理 针对具体行业应用的横切行为内容总结
以上是互联网集市为您收集整理的理解原生JAVA AOP思想全部内容,希望文章能够帮你解决理解原生JAVA AOP思想所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。