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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AspectJ的实现机制

發布時間:2024/6/3 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AspectJ的实现机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

此文摘自IBM developerWorks
原文請看:What is AspectJ

使用AspectJ,我們不用對原有的代碼做任何修改,就可以為代碼提供不同的Aspect(方面)--比如,認證,事務等。

我們只需要提供兩個不同的Aspect--認證Aspect和事務Aspect。

Code 4.1 AuthAspect.javaAuthAspect{bankMethods() : (* Bank.deposit(…)) || (* Bank. withdraw (…));Object (): bankMethods(){// 驗證account是否為合法用戶();} };Code 4.2 TransactionAspect.javaTransactionAspect{bankMethods() : (* Bank.deposit(…)) || (* Bank. withdraw (…));Object (): bankMethods(){// Begin TransactionObject result = ();// End Transactionresult;} };

如果您暫時不能理解這段代碼,沒有關系,后面會講到,這些aspect的定義,不過是定義了一些代碼生成規則。

我們用AspectJ編譯器編譯Bank文件和含有aspect的這個文件,出來的結果就是帶有安全認證和事務處理的Bank類。編譯出來的這個Bank類調用了AspectJ Runtime Lib,所以,如果你要運行這個Bank類,你需要把AspectJ Runtime Lib設置在你的classpath里面。

我們來看看,AspectJ編譯器為我們做了什么事情。

  • 首先,AspectJ從文件列表里取出所有的文件名,然后讀取這些文件,進行分析。
  • AspectJ發現一些文件含有aspect的定義,在這個例子里,就是AuthAspect和TransactionAspect的定義;這些aspect就是代碼生成規則。
  • AspectJ根據這些aspect代碼生成規則,修改添加你的源代碼。在這個例子里,就是修改添加Bank文件。
  • AspectJ讀取AuthAspect的定義,發現了一個pointcut--bankMethods();這個pointcut的定義是execution(* Bank.deposit(…)) || execution(* Bank. withdraw (…)),表示所有對Bank類的deposit和withdraw方法的執行點。
  • AspectJ繼續讀取AuthAspect的定義,發現了一個around(),這在AspectJ中叫做Advice,我不明白為什么叫這個名字,不過沒關系,我們只要知道它是干什么的就行了。Advice允許你在某個類的方法的調用之前或調用之后,加入另外的代碼。Code 4.1所示代碼中的around()的" // 驗證account是否為合法用戶"部分,就是要加入的代碼。這段代碼要加在哪里呢?around()后面跟了一個pointcut--bankMethods()。根據這個pointcut,AspectJ會把這段代碼加入到Bank.deposit和Bank.withdraw兩個方法的執行之前。達到的效果就如同Code 2.2所示。
  • AspectJ讀取TransactionAspect的定義,象第(4)步一樣,發現了發現了一個pointcut--bankMethods()。
  • AspectJ繼續讀取AuthAspect的定義,發現了一個around()。這次AspectJ把"Begin Transaction"和"End Transaction"兩段代碼加在Bank.deposit和Bank. withdraw兩個方法的執行前后。達到的效果就如同Code 2.3所示。
  • 如何驗證這一點?您可以到http://www.eclipse.org/aspectj/下載安裝AspectJ,編譯里面的Sample,把編譯結果反編譯一下,就可以看到AspetJ自動生成的代碼。

    我們看到,AspectJ是一種代碼自動生成工具。你編寫一段通用的代碼,比如認證方面的代碼,事務方面的代碼,然后根據AspectJ語法定義一套代碼生成規則(aspect定義),AspectJ就會幫助你自動把這段通用代碼分布到對應的代碼里面去,簡單快捷,算無遺策。

    轉載于:https://www.cnblogs.com/na57/archive/2005/01/26/97619.html

    總結

    以上是生活随笔為你收集整理的AspectJ的实现机制的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产无套内射普通话对白 | 毛利兰被扒开腿做同人漫画 | 久久久久国色av免费观看性色 | 日韩欧美精品一区二区 | 国产在线视频一区二区 | 猛男大粗猛爽h男人味 | av在线收看| 色眯眯av | 蜜桃色一区二区三区 | 黑人一区二区 | 国产精品人人爽人人爽 | 毛片aaaaaa| 丝袜老师办公室里做好紧好爽 | 少妇被狂c下部羞羞漫画 | 精品免费在线视频 | 美女扒开屁股让男人捅 | 有奶水的迷人少妇 | 国产一区二区三区视频播放 | 可以免费看黄的网站 | 中文字幕福利 | 99国产精品久久久久久久久久久 | 快播色图 | 色啊色 | 国产精品96久久久久久 | 成人免费在线观看 | 日日干夜夜拍 | 婷婷四房综合激情五月 | 日韩一片 | 中文字幕精品三级久久久 | 中文字幕精品一区久久久久 | 精东影业一区二区三区 | 一级免费视频 | 日本不卡在线观看 | 99久久久无码国产精品性 | 欧美亚洲天堂网 | 人人妻人人做人人爽 | 熟妇五十路六十路息与子 | 免费黄色小视频在线观看 | a天堂中文网| 日韩一区二区影视 | 啪啪中文字幕 | 美女网站免费观看视频 | 中文字幕av第一页 | 神马午夜51 | 免费大黄网站 | 青青艹视频 | 日韩va亚洲va欧美va久久 | 精品国产xxx | jizz日本大全 | a天堂在线| 成人在线视屏 | 久久久久人妻一区精品色 | 成年人的毛片 | 在线亚洲观看 | 少妇太爽了太深了太硬了 | 免费无码又爽又黄又刺激网站 | 成av人片在线观看www | 日本三级欧美三级 | 午夜寂寞福利 | 国产精品久久婷婷 | 男插女在线观看 | 国内自拍视频在线播放 | 亚洲精品综合网 | 日本黄色片网址 | 色天天干| 久草综合在线观看 | 女同hd系列中文字幕 | 麻豆av影院 | 亚洲熟女综合一区二区三区 | 国产乱子伦精品无码专区 | 精久久 | a级黄色录像 | 午夜少妇久久久久久久久 | 成年人黄色av| 一区二区日韩欧美 | 一级 黄 色 片69 | 欧美视频在线免费 | av色区| 国产精品久久久久影院色老大 | 久久伊人一区二区 | 国产精品电影一区二区三区 | 成人妇女淫片aaaa视频 | 国产在线综合网 | 精品一区二区不卡 | 色性网站| 依人综合网 | 国产福利一区在线 | 亚洲精品白浆高清久久久久久 | 国产aa大片| 樱花动漫无圣光 | 中国黄色a级 | 国产网站精品 | 日韩在线高清视频 | 99福利网 | 日韩不卡av| 免费成人91 | 国产免费内射又粗又爽密桃视频 | 欧美福利视频 | 天堂色播|