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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring5参考指南:SpringAOP简介

發(fā)布時間:2024/2/28 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring5参考指南:SpringAOP简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • AOP的概念
    • Spring AOP簡介
    • Spring AOP通知類型

寫過程序的都知道OOP即面向對象編程。

從最開始的面向過程編程,到后面的面向對象編程,程序的編寫方式發(fā)生了重大的變化,面向對象編程將業(yè)務邏輯封裝成一個一個的對象,所有的操作都轉換為對對象的操作。

面向對象編程現(xiàn)在使用的非常普遍,一般來說只要是高級語言都支持,但是它也有缺點,比如如果我們想做一些橫跨對象的操作(如統(tǒng)計各個對象里面某個方法的執(zhí)行時間),這時候面向對象可以能力有不逮。我們可能需要在每個對象里面都添加一些統(tǒng)計時間的代碼,那么有沒有更好的方法來處理這個問題呢?

面向方面編程(AOP)通過提供對程序結構的另一種思考方式來補充面向對象編程(OOP)。OOP中模塊化的關鍵單元是類,而AOP中模塊化的單元是方面。方面支持跨多個類型和對象的關注點(如事務管理)的模塊化。(在AOP文獻中,這種關注通常被稱為“橫切”關注。)

AOP的概念

AOP的英文全稱是Aspect-oriented Programming (AOP) 。面向方面的編程。它有如下幾個概念:

  • 方面(Aspect):跨越多個類的模塊化關注點。事務管理是企業(yè)Java應用程序中橫切關注點的一個很好的例子。在SpringAOP中,方面是通過使用常規(guī)類(基于模式的方法)或使用@Aspect注解(@Aspectj樣式)注解的常規(guī)類來實現(xiàn)的。

  • 連接點(Join point):程序執(zhí)行過程中的一點,如方法的執(zhí)行或異常的處理。在SpringAOP中,連接點總是表示一個方法執(zhí)行。

  • 通知(Advice):一個方面在特定連接點采取的行動。不同類型的通知包括“環(huán)繞”、“前“和”后”通知。許多AOP框架(包括Spring)將通知建模為攔截器,并在連接點周圍維護攔截器鏈。

  • 切點(Pointcut):與連接點匹配的謂詞。通知與切入點表達式關聯(lián),并在與切入點匹配的任何連接點上運行(例如,使用特定名稱執(zhí)行方法)。pointcut表達式匹配的連接點概念是AOP的核心,Spring默認使用AspectJ pointcut表達式語言。

  • 說明(Introduction):代表類型聲明其他方法或字段。SpringAOP允許您向任何advised對象引入新的接口(和相應的實現(xiàn))。例如,您可以使用一個Introduction使bean實現(xiàn)一個IsModified接口,以簡化緩存。(introduction在AspectJ社區(qū)中稱為類型間聲明。)

  • 目標對象(Target object):由一個或多個方面advised的對象。也稱為“advised 對象”。因為SpringAOP是通過使用運行時代理實現(xiàn)的,所以這個對象始終是一個代理對象。

  • AOP代理:由AOP框架創(chuàng)建的用于實現(xiàn)aspect contracts(通知方法執(zhí)行等)的對象。在Spring框架中,AOP代理是JDK動態(tài)代理或CGLIB代理。

  • 編織(Weaving):將aspects與其他應用程序類型或對象鏈接,以創(chuàng)建advised的對象。這可以在編譯時(例如,使用AspectJ編譯器)、加載時或運行時完成。Spring AOP和其他純Java AOP框架一樣,在運行時進行編織。

Spring AOP簡介

Spring AOP是純Java實現(xiàn)的。不需要特殊的編譯過程。

SpringAOP目前只支持方法上面的連接點,并沒有實現(xiàn)字段連接。如果要實現(xiàn)這樣的功能可以考慮使用AspectJ。

面向方面的集大成者是AspectJ, 它提供了面向方面編程的非常全面的功能,SpringAOP從未試圖與AspectJ競爭,以提供全面的AOP解決方案。我們相信,基于代理的框架(如SpringAOP)和全面的框架(如AspectJ)都是有價值的,它們是互補的,而不是競爭中的。Spring無縫地將SpringAOP和IOC與AspectJ集成在一起。

SpringAOP的AOP方法不同于大多數(shù)其他AOP框架。目的并不是提供最完整的AOP實現(xiàn)。相反,其目的是在AOP實現(xiàn)和SpringIOC之間提供緊密的集成,以幫助解決企業(yè)應用程序中的常見問題。

Spring AOP通知類型

Spring AOP包含以下幾種通知類型:

  • Before advice:在連接點之前運行但不能阻止執(zhí)行到連接點的通知(除非它拋出異常)。
  • After returning advice:在連接點正常完成后要運行的通知(例如,如果方法返回并且不引發(fā)異常)。
  • After throwing advice: 如果方法通過引發(fā)異常而退出,則要執(zhí)行的通知。
  • After (finally) advice:無論連接點退出的方式如何(正常或異常返回),都要執(zhí)行的通知。
  • Around advice:環(huán)繞連接點(如方法調(diào)用)的通知。這是最有力的通知。around通知可以在方法調(diào)用前后執(zhí)行自定義行為。它還負責通過返回自己的返回值或引發(fā)異常來選擇是繼續(xù)到連接點還是快捷地執(zhí)行通知的方法。

最常使用的是Around advice,他的功能也最強大。他可以實現(xiàn)其他advice的功能,但是我們建議使用功能最小的通知類型,因為這樣的模型更加簡單,并減少你的編寫程序出錯幾率。

更多教程請參考 flydean的博客

總結

以上是生活随笔為你收集整理的Spring5参考指南:SpringAOP简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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