日韩性视频-久久久蜜桃-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在线| 久久久国产精品黄毛片 | 国产精品乱子伦 | 精品九九视频 | 无码免费一区二区三区免费播放 | 国产观看| 你懂的在线免费观看 | 欧美福利视频导航 | 男人都懂的网站 | 国产 日韩 欧美 在线 | 成人免费视频国产在线观看 | 最新黄色av | 国产一级二级在线观看 | 伊人狼人综合 | 师生出轨h灌满了1v1 | 国产九色在线播放九色 | 爱豆国产剧免费观看大全剧集 | 中国二级毛片 | 污网站免费在线观看 | 日韩天天| 欧美a网| 日本三级久久 | 亚洲欧美日本在线观看 | 亚洲人妖在线 | 欧美日韩欧美 | 91爱爱网| 在线不卡的av | 黄色国产一区 | 欧美日韩一区二区三区不卡视频 | 日韩国产成人 | 朋友人妻少妇精品系列 | 色翁荡息又大又硬又粗又爽 | bbbbbbbbb毛片大片按摩 | 爽爽淫人| 萌白酱在线观看 | 日本黄网在线观看 | 国产成人精品一区二区 | 误杀1电影免费观看高清完整版 | 成人区人妻精品一区二区网站 | 色哟哟在线观看 | 黄色三级大片 | 久久青青草原亚洲av无码麻豆 | a天堂中文在线观看 | 北条麻妃在线一区二区 | 无码人妻aⅴ一区二区三区玉蒲团 | 人妻丰满熟妇无码区免费 | 免费小视频 | 毛片网站在线播放 | 中文字字幕码一二三区 | 亚洲29p| 国产美女一区二区三区 | 色国产视频 | 天天躁夜夜躁 | 亚洲AV无码精品色毛片浪潮 | 在线观看av黄色 | 给我看高清的视频在线观看 | 亚洲在线国产 | 制服丝袜一区 | 亚洲色图激情小说 | 亚洲综合天堂 | 成人av手机在线观看 | 免费看黄网站在线观看 | 欧美成人一二三 | 免费欧美一区 | 亚洲自拍偷拍精品视频 | 一区二区三区精品视频在线观看 | 日本成人性爱 | 91精品在线播放 | 天天干免费视频 | 国语对白久久 | 日本不卡一区二区 | 狗爬女子的视频 | 色丁香在线 | 欧美一级一片 | 狠狠躁天天躁夜夜躁婷婷 | 欧美不卡在线视频 | 免费人成视频在线播放 | 国产亚洲不卡 | 精品人妻互换一区二区三区 | 四虎一区二区三区 | 啪网址 | 精品小视频在线观看 | 国产黄色精品 | 婷婷在线视频 | 香蕉色综合 | 妹子干综合| 免费av入口 | 国产在线资源 | 国产网站免费观看 | 岳奶大又白下面又肥又黑水多 | 加勒比久久综合 | 九九久久视频 | xxxx日本黄色 | 日本黄色高清 | 国产精品人人 | 99久久精品日本一区二区免费 |