日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 事务处理 是不是aop思想_理解原生JAVA AOP思想

發(fā)布時(shí)間:2025/3/20 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 事务处理 是不是aop思想_理解原生JAVA AOP思想 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一路走來,遇到好些后生來問我:AOP該如何理解?我一開始是丟個(gè)度娘給他們的。但是現(xiàn)在回頭想想,培養(yǎng)新人不能這么草率,丟個(gè)度娘給他們,讓他們花了大量的時(shí)間去閱讀無用的文章外,一不小心還走火入魔了。所以現(xiàn)在我正兒八經(jīng)的寫了個(gè)手稿,以便做以后的相關(guān)問題回答。文章有些瑕疵,請咬文嚼字的大牛們忽略,本文目的在于解釋AOP到底有個(gè)錘子用。

上安利。。。說錯(cuò),是案例:在一個(gè)夜黑風(fēng)高的晚上,張三胖突然接到張大胖的電話,說咱們的視頻網(wǎng)站響應(yīng)延時(shí)太長了。你想辦法監(jiān)測一下是哪里的代碼導(dǎo)致延時(shí)巨大~~~。

張三胖打開代碼,關(guān)鍵代碼主要在張五胖寫的Video類里面:

public interfaceIVideo {

List get();

Object getInfo();

}

public class JapanVideo implementsIVideo {

@OverridepublicList get() {try{

Thread.sleep(1024);

}catch(InterruptedException e) {

e.printStackTrace();

}

System.out.println("一大堆正規(guī)的小視頻列表~~~~~");return null;

}

@OverridepublicObject getInfo() {try{

Thread.sleep(3221);

}catch(InterruptedException e) {

e.printStackTrace();

}

System.out.println("導(dǎo)演:XXX;主演:蒼老師~~~~~");return null;

}

}

調(diào)用方:

IVideo video = newJapanVideo();

video.get();

video.getInfo();

張三胖不想去修改張五胖的代碼。所以張三胖就考慮在每個(gè)方法執(zhí)行前后增加時(shí)間計(jì)算。如果類里面的方法不多,這樣是可以的。但是如果Video有上百個(gè)方法,那怎么搞?這時(shí)候AOP就來搞事情了。

public class AOPHandle implementsInvocationHandler {privateObject obj;publicAOPHandle(Object obj){this.obj =obj;

}

@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throwsThrowable {//方法返回值

System.out.println("開始執(zhí)行:"+System.currentTimeMillis());//反射調(diào)用方法

Object ret=method.invoke(obj, args);//聲明結(jié)束

System.out.println("開始完畢:"+System.currentTimeMillis());//返回反射調(diào)用方法的返回值

returnret;

}

}

原調(diào)用方修改為:

AOPHandle aopHandle = new AOPHandle(newJapanVideo());

IVideo video=(IVideo) Proxy.newProxyInstance(

JapanVideo.class.getClassLoader(),new Class[] { IVideo.class},

aopHandle);

video.get();

System.out.println("\n");

video.getInfo();

這樣就能檢測到每個(gè)方法的消耗的時(shí)間了。

這只是一個(gè)小例子,其實(shí)AOP能做的不僅僅是這些。如:

日志記錄,跟蹤,優(yōu)化和監(jiān)控

事務(wù)的處理

系統(tǒng)統(tǒng)一的認(rèn)證、權(quán)限管理等

應(yīng)用系統(tǒng)的異常捕捉及處理

針對具體行業(yè)應(yīng)用的橫切行為

總結(jié)

以上是生活随笔為你收集整理的java 事务处理 是不是aop思想_理解原生JAVA AOP思想的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。