日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Aspectj與Spring AOP的對比分析

瀏覽:158日期:2023-07-10 08:12:16
1、簡介

今天有多個可用的 AOP 庫, 它們需要能夠回答許多問題:

1、是否與用戶現有的或新的應用程序兼容?

2、在哪里可以實現 AOP?

3、與自己的應用程序集成多快?

4、性能開銷是多少?

在本文中, 我們將研究如何回答這些問題, 并介紹 Spring aop 和 AspectJ, 這是 Java 的兩個最受歡迎的 aop 框架。

2、AOP概念

在開始之前, 讓我們對術語和核心概念進行快速、高層次的審查:

Aspect —— 一種標準代碼/功能, 分散在應用程序中的多個位置, 通常與實際的業務邏輯不同 (例如, 事務管理)。每個方面都側重于特定的跨裁剪功能

Joinpoint —— 它是執行程序 (如方法執行、構造函數調用或字段分配) 期間的特定點

Advice —— 特定 joinpoint 中的方面所采取的行動

Pointcut —— 與 joinpoint 匹配的正則表達式。每次連接點與切入點匹配時, 都將執行與該切入點關聯的指定建議。

Weaving —— 將各方面與目標對象鏈接起來以創建建議對象的過程

3、Spring AOP 和 AspectJ

現在, 讓我們在一些維度上討論 Spring AOP 和 AspectJ —— 例如功能、目標、Weaving(織入)、內部結構、joinpoints 和簡單性。

3.1、能力和目標

簡單地說, Spring AOP 和 AspectJ 有不同的目標。

Spring aop 旨在提供一個跨 Spring IoC 的簡單的 aop 實現, 以解決程序員面臨的最常見問題。它不打算作為一個完整的 AOP 解決方案 —— 它只能應用于由 Spring 容器管理的 bean。

另一方面, AspectJ 是原始的 aop 技術, 目的是提供完整的 aop 解決方案。它更健壯, 但也比 Spring AOP 復雜得多。還值得注意的是, AspectJ 可以在所有域對象中應用。

3.2、Weaving(織入)

AspectJ 和 Spring AOP 都使用不同類型的編織, 這會影響它們在性能和易用性方面的行為。

AspectJ 使用三種不同類型的Weaving:

編譯時 Weaving: AspectJ 編譯器作為輸入我們的方面的源代碼和我們的應用, 并產生一個織入類文件作為輸出;

編譯后 Weaving: 這也稱為二進制織入。它是用來織入現有的類文件和 JAR 文件與我們的方面;

加載時間 Weaving: 這就像前二進制織入, 不同的是織入被推遲, 直到類加載程序加載類文件到 JVM。

要了解更多關于 AspectJ 本身的詳細信息, 請 閱讀此文。

當 AspectJ 使用編譯時和class文件加載時織入時,Spring AOP 利用運行時織入。

使用運行時編織, 這些方面在使用目標對象的代理執行應用程序時被編織-使用 JDK 動態代理或 CGLIB 代理 (在下一點討論):

Aspectj與Spring AOP的對比分析

3.3、內部結構與應用

Spring aop 是基于代理的 aop 框架。這意味著, 要實現目標對象的各個方面, 它將創建該對象的代理。使用以下兩種方法之一實現:

1、JDK 動態代理 —— Spring AOP 的首選方式。只要目標對象實現甚至一個接口, 就會使用 JDK 動態代理;

2、CGLIB 代理 —— 如果目標對象沒有實現接口, 則可以使用 CGLIB 代理。

我們可以從 官方文檔 中了解有關 Spring AOP 代理機制的更多信息。

另一方面, AspectJ 在運行時不做任何事情, 因為類是直接用方面進行編譯的。

與 Spring AOP 不同, 它不需要任何設計模式。為了編織代碼的各個方面, 它引入了稱為 AspectJ 編譯器 (ajc) 的編譯器, 通過它編譯我們的程序, 然后通過提供一個小型 (100K) 運行時庫來運行它。

3.4、Joinpoints

在3.3 節中, 我們顯示了 Spring AOP 是基于代理模式的。因此, 它需要將目標 Java 類分類, 并相應地應用交叉問題。

但這是有限制的。我們不能在 '最終' 類中應用交叉問題 (或方面), 因為它們不能被重寫, 因此會導致運行時異常。

同樣適用于靜態和最終方法。不能將 Spring 方面應用于它們, 因為它們不能被覆蓋。因此, 由于這些限制, Spring AOP 只支持方法執行連接點。

然而, AspectJ 在運行前直接將橫切關注點編織到實際代碼中。與 Spring AOP 不同, 它不需要對目標對象進行子類, 因此也支持許多其他 joinpoints。

以下是支持的 joinpoints 的摘要:

Joinpoint Spring AOP Supported AspectJ Supported Method Call No Yes Method Execution Yes Yes Constructor Call No Yes Constructor Execution No Yes Static initializer execution No Yes Object initialization No Yes Field reference No Yes Field assignment No Yes Handler execution No Yes Advice execution No Yes

還值得注意的是, 在 Spring AOP 中, aspects不應用于在同一個類中相互調用的方法。

這顯然是因為當我們調用同一類中的方法時, 我們就不會調用 Spring AOP 提供的代理的方法。如果我們需要這個功能, 那么我們必須在不同的 bean 中定義一個單獨的方法, 或者使用 AspectJ。

3.5、簡單性

Spring AOP 顯然更簡單, 因為它不會在我們的構建過程中引入任何額外的編譯器或織入。它使用運行時編織, 因此它與我們通常的構建過程無縫集成。雖然它看起來很簡單, 但它只適用于由 Spring 管理的 bean。

但是, 要使用 AspectJ, 我們需要引入 AspectJ 編譯器 (ajc) 并重新打包所有的庫 (除非我們切換到編譯后或加載時間的織入)。

當然, 這比前者更復雜, 因為它引入了 AspectJ Java 工具 (包括編譯器 (ajc)、調試器 (ajdb)、文檔生成器 (ajdoc)、程序結構瀏覽器 (ajbrowser)), 我們需要將它們與我們的 IDE 或生成工具。

3.6、性能

就性能而言, 編譯時織入比運行時織入快得多。Spring AOP 是基于代理的框架, 因此在應用程序啟動時會創建代理。另外, 每個方面還有一些方法調用, 這會對性能產生負面影響。

另一方面, AspectJ 在應用程序執行之前將這些方面編織到主代碼中, 因此沒有額外的運行時開銷, 與 Spring AOP 不同。

基于這些原因, 基準表明 AspectJ 的速度幾乎比 Spring AOP 快8到35倍。

4、總結

此快速表總結了 Spring AOP 和 AspectJ 之間的關鍵區別:

Spring AOP AspectJ 在純 Java 中實現 使用 Java 編程語言的擴展實現 不需要單獨的編譯過程 除非設置 LTW,否則需要 AspectJ 編譯器 (ajc) 只能使用運行時織入 運行時織入不可用。支持編譯時、編譯后和加載時織入 功能不強-僅支持方法級編織 更強大 - 可以編織字段、方法、構造函數、靜態初始值設定項、最終類/方法等......。 只能在由 Spring 容器管理的 bean 上實現 可以在所有域對象上實現 僅支持方法執行切入點 支持所有切入點 代理是由目標對象創建的, 并且切面應用在這些代理上 在執行應用程序之前 (在運行時) 前, 各方面直接在代碼中進行織入 比 AspectJ 慢多了 更好的性能 易于學習和應用 相對于 Spring AOP 來說更復雜 5、選擇正確的框架

如果我們分析了本節中提出的所有論點, 我們就會開始理解, 一個框架比另一個架構更好。

簡單地說, 選擇很大程度上取決于我們的要求:

框架: 如果應用程序沒有使用 spring 框架, 那么我們就別無選擇, 只能放棄使用 spring AOP 的想法, 因為它無法管理任何超出 spring 容器范圍的東西。但是, 如果我們的應用程序是完全使用 spring 框架創建的, 那么我們可以使用 spring AOP, 因為它是簡單的學習和應用

靈活性: 由于有限的 joinpoint 支持, Spring aop 不是一個完整的 aop 解決方案, 但它解決了程序員面臨的最常見的問題。盡管如果我們想深入挖掘和開發 AOP 以達到其最大能力, 并希望得到廣泛的可用 joinpoints 的支持, 那么最好選擇 AspectJ

性能: 如果我們使用的是有限的切面, 那么就會有細微的性能差異。但有時, 應用程序有成千上萬個切面的情況。我們不想在這樣的情況下使用運行時編織, 所以最好選擇 AspectJ。AspectJ 已知的速度比 Spring AOP 快8到35倍

兩者的最佳之處: 這兩個框架都是完全兼容的。我們總是可以利用 Spring AOP; 只要有可能, 仍然可以在不支持前者的地方使用 AspectJ 獲得支持

6、結論

在本文中, 我們分析了 Spring AOP 和 AspectJ 的幾個關鍵領域。

我們比較了兩種 AOP 方法的靈活性, 以及它們將如何輕松地適應我們的應用程序。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久中文精品| 香蕉视频亚洲一级| 日韩亚洲在线| 亚洲视频综合| 五月天久久网站| 国产精品试看| 亚洲天堂av资源在线观看| 蜜桃传媒麻豆第一区在线观看| 国产一区91| 在线国产日韩| 久久国产乱子精品免费女| 国产剧情一区| 久久99国产精品视频| caoporn视频在线| 水蜜桃久久夜色精品一区| 成午夜精品一区二区三区软件| 国产美女高潮在线| 欧美午夜精品一区二区三区电影| 亚洲国产不卡| 蜜桃久久久久久| 欧美日韩一区二区三区在线电影| 国产精品日本一区二区不卡视频 | 色网在线免费观看| 免费在线小视频| 亚洲免费中文| 久久国产人妖系列| 不卡福利视频| 国产精品毛片在线看| 日韩在线a电影| 久久国产三级| 日韩欧美中文| 亚洲欧美久久久| 国产日韩一区| 在线日韩成人| 日本不卡中文字幕| 美女网站一区| 久久精品免费看| 国产日韩欧美一区| 亚洲一区黄色| 夜夜精品视频| 自拍日韩欧美| 成人高清一区| 欧美日韩国产在线一区| 免费不卡中文字幕在线| 亚洲精品乱码日韩| 狠狠久久伊人| 99在线|亚洲一区二区| 欧美亚洲免费| 亚洲91精品| 日韩高清不卡在线| 欧美一级鲁丝片| 亚洲精品在线二区| av资源新版天堂在线| 亚洲视频国产| 黑森林国产精品av| 日韩区一区二| 久久精品影视| 国产欧美自拍一区| 日韩一区二区在线免费| 亚洲精品系列| 日韩精品免费一区二区在线观看| 日韩亚洲精品在线观看| 亚洲成a人片| 国产亚洲欧美日韩精品一区二区三区 | 青青草视频一区| 成人羞羞视频在线看网址| 日韩在线电影| 91精品综合| 久久不见久久见国语| 国产农村妇女精品一区二区| 日本久久黄色| 亚洲精品观看| 亚洲天堂免费| 久久国产精品免费一区二区三区| 正在播放日韩精品| 欧美日韩精品一区二区视频| 亚洲精品三级| 国产字幕视频一区二区| 国产图片一区| 亚洲性色av| 欧美日韩午夜电影网| 久久精品中文| 美女视频黄免费的久久| 一区二区国产精品| 在线日韩一区| 精品福利久久久| 日韩动漫一区| 香蕉久久国产| 日韩欧美在线中字| 麻豆精品视频在线观看免费| 婷婷亚洲综合| www成人在线视频| 美女尤物国产一区| 亚州av一区| 亚洲欧美日韩国产| 欧美二区视频| 999久久久精品国产| sm捆绑调教国产免费网站在线观看 | 99国产精品私拍| 少妇精品导航| 成人午夜在线| 久久中文字幕一区二区三区| 亚洲青青久久| 免费看黄色91| 日韩一区二区免费看| 久久伦理在线| 99热精品久久| 色婷婷精品视频| 欧美天堂视频| 日韩av免费大片| 另类综合日韩欧美亚洲| 国产精品午夜av| 国产亚洲精品美女久久| 91成人在线精品视频| 日本不卡一区二区三区| 四虎精品永久免费| 日本a口亚洲| 日欧美一区二区| 日本亚洲最大的色成网站www| 日韩免费精品| 国产精一区二区| 精品一区电影| 亚洲综合电影| 激情久久五月| 午夜亚洲一区| 中文字幕一区二区精品区| 亚洲三级视频| 日韩精品高清不卡| 国产日韩欧美一区二区三区 | 日本激情一区| 久久男人av资源站| 欧美日韩精品免费观看视欧美高清免费大片| 在线看片福利| 美女少妇全过程你懂的久久| 国产精品美女| 青草av.久久免费一区| 久久激情五月婷婷| 精品国内亚洲2022精品成人| 福利一区在线| 免费黄色成人| 视频在线观看国产精品| 日韩一区二区三区在线看| 91精品国产经典在线观看| 久久国产人妖系列| 国产suv精品一区二区四区视频 | 欧美在线不卡| 国产中文欧美日韩在线| 日韩欧美二区| 欧美综合另类| 日韩在线麻豆| 精品久久久网| 国产主播一区| 中文字幕一区日韩精品| 国产精品美女午夜爽爽| 精品亚洲精品| 亚洲成人国产| 亚洲三级网站| 国产一区不卡| 亚洲自拍另类| 国产亚洲精品精品国产亚洲综合| 激情久久一区二区| 黄色不卡一区| 91精品尤物| 日韩不卡一区| 日韩精品一级中文字幕精品视频免费观看| 日本国产欧美| 国产精品伦理久久久久久| 不卡一区2区| 久久激五月天综合精品| 伊人网在线播放| 日韩午夜电影| 国产日韩欧美一区| 亚洲特级毛片| 国产精品久一| 亚洲夜间福利| 国产欧美高清视频在线| 日本精品影院| 欧美一级网站| 午夜国产精品视频| 麻豆精品视频在线| 免费日韩av| 高清一区二区| 亚洲精品影视| 久久久久国产精品一区二区| 日本成人中文字幕| 久草免费在线视频| 三级久久三级久久久| 欧美三级网址| 国产精品夜夜夜| 在线国产一区二区| 麻豆国产一区| 美女黄网久久| 国产精品毛片久久| 亚洲精品成人一区| 久久青草久久| 久久影视三级福利片| 蜜臀av在线播放一区二区三区| 98精品视频| 国产精品久久久久久久久久齐齐| 尤物在线精品|