更新時間:2022-11-21 09:32:08 來源:動力節點 瀏覽1420次
Java aop實現原理是什么?動力節點小編來告訴大家。
首先了解一下 AOP 的主要概念。 建議——從連接點調用的附加邏輯或代碼。建議可以在連接點之前、之后或代替連接點執行(下面將詳細介紹)。可能的建議類型:
之前——這種類型的建議在目標方法(即連接點)執行之前啟動。將方面用作類時,我們使用@Before注釋將通知標記為之前出現。將方面用作.aj文件時,這將是before()方法。
After — 在方法(連接點)執行完成后執行的建議,無論是在正常執行還是在拋出異常時。
將方面用作類時,我們可以使用@After注釋來指示這是之后的通知。
將方面用作.aj文件時,這是after()方法。
返回后——只有當目標方法正常完成且沒有錯誤時才執行此建議。
當方面表示為類時,我們可以使用@AfterReturning批注將通知標記為在成功完成后執行。
將方面用作.aj文件時,這將是after() 返回 (Object obj)方法。
拋出后——此建議適用于方法(即連接點)拋出異常的情況。我們可以使用此建議來處理某些類型的失敗執行(例如,回滾整個事務或具有所需跟蹤級別的日志)。
對于類方面,@AfterThrowing注釋用于指示在拋出異常后使用此建議。
將方面用作.aj文件時,這將是after() throwing (Exception e)方法。
周圍——也許是最重要的建議類型之一。它包含一個方法,即一個連接點,我們可以使用它來選擇是否執行給定的連接點方法。
您可以編寫在執行連接點方法之前和之后運行的建議代碼。
around advice負責調用連接點方法和返回值(如果該方法有返回值)。換句話說,在這個通知中,你可以簡單地模擬目標方法的運行而不調用它,并返回你想要的任何結果作為返回結果。
給定方面作為類,我們使用@Around注釋來創建包裝連接點的建議。當使用.aj文件形式的方面時,此方法將是around()方法。
連接點——運行程序(即方法調用、對象創建、變量訪問)中應該應用建議的點。換句話說,這是一種用于查找代碼注入位置(應該應用建議的地方)的正則表達式。 切入點——一組連接點。切入點確定給定的建議是否適用于給定的連接點。 方面——實現橫切功能的模塊或類。切面通過在某些切入點定義的連接點應用建議來更改其余代碼的行為。換句話說,它是建議和連接點的組合。 介紹— 更改類的結構和/或更改繼承層次結構以將方面的功能添加到外部代碼。 目標— 建議將應用到的對象。 編織——將方面鏈接到其他對象以創建建議代理對象的過程。這可以在編譯時、加載時或運行時完成。織法分為三種:
編譯時編織——如果你有方面的源代碼和使用方面的代碼,那么你可以直接使用 AspectJ 編譯器編譯源代碼和方面;
編譯后編織(二進制編織) ——如果您不能或不想使用源代碼轉換將方面編織到代碼中,您可以采用先前編譯的類或 jar 文件并將方面注入其中;
加載時編織——這只是二進制編織,延遲到類加載器加載類文件并為 JVM 定義類。
需要一個或多個編織類加載器來支持這一點。它們要么由運行時顯式提供,要么由“編織代理”激活。
AspectJ — AOP范例的特定實現,它實現了執行橫切任務的能力。文檔可以在這里找到。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習