Spring IOC 和Aspectj AOP


1.Aspectj AOP 是一套獨立的AOP 解決方案,不僅限於java應用,不依賴其他方案,屬於編譯時增強,有自己單獨的編譯器。Spring AOP 是基於Spring 容器的的AOP解決方式,屬於運行時增強,采用動態代理的方式實現(JDK動態代理,CGLIB動態代理),僅限於java應用使用。

           (圖片來自:https://blog.csdn.net/weixin_42181142/article/details/101212351

2.兩者聯系在於Spring AOP 預留了整合Aspectj 的入口,同時使用了Aspectj的一些代碼,如@Aspect @before 這些注解。

3.使用

(1)spring aop 使用和學習都比較簡單,二期兼容aspectj的代碼,但是他本身不是對象本身去執行,而是對象的代理去執行,這就意味着在運行時的開銷要大一點。但是如果對AOP的需求不是特別深入的話僅僅使用spring aop 就可以完成了。

(2)aspectj 支持的功能更多一下,而且運行時的開銷會更小,也更快具體用法請參考:

http://www.360doc.com/content/18/0209/22/33260087_729028400.shtml

4.spring aop 中的 < aop:aspect>與< aop:advisor>

在面向切面編程時,我們會使用< aop:aspect>,定義切面(切面包括通知和切點)
在進行事務管理時,我們會使用< aop:advisor>,引用通知和切點(切點和通知已經定義)

具體用法區別請看前面的幾篇文章。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM