javascript
Spring AOP概述及底层实现原理
Spring AOP概述及底層實現原理
aop概述
AOP全稱為Aspect Oriented Programming的縮寫,意為:面向切面編程。將程序中公用代碼進行抽離,通過動態代理實現程序功能的統一維護的一種技術。
使代碼耦合性降低,提高了開發的效率。
aop可以完成的功能
日志記錄,性能統計,安全控制,事務處理,異常處理等等。
aop與oop區別
OOP:(面向對象編程)針對業務處理過程的實體及其屬性和行為進行抽象封裝,以獲得更加清晰高效的邏輯單元劃分。java實體類就是面向對象編程的最準確的體現。
AOP:則是針對業務處理過程中的切面進行提取,它所面對的是處理過程中的某個步驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果。這兩種設計思想在目標上有著本質的差異。
aop相關術語
目標對象target:指的是需要被增強的對象,由于spring aop是通過代理模式實現,從而這個對象永遠是被代理對象。
連接點:所謂連接點是指那些被攔截到的點,在spring中這些點指的是方法,因為spring只支持方法類型的連接點。
切入點:表示一組 joint point,這些 joint point 或是通過邏輯關系組合起來,或是通過通配、正則表達式等方式集中起來,它定義了相應的 Advice 將要發生的地方
簡單說切入點是指我們要對哪些連接點進行攔截的定義。
通知:所謂通知是指攔截到連接點之后所要做的事情就是通知,通知分為前置通知,后置通知,異常通知,最終通知,環繞通知
切面aspect:是切入點和通知的結合
織入weaving:織入是一個過程,是將切面應用到目標對象從而創建出AOP代理對象的過程,織入可以在編譯期,類裝載期,運行期進行。(Spring采用動態織入,而aspectj采用靜態織入)
代理proxy:一個類被AOP織入增強后,就產生一個結果代理類.
spring AOP底層實現介紹
spring的AOP底層是由 JDK提供的動態代理技術 和 CGLIB(動態字節碼增強技術)實現。
**JDK動態代理:**Jdk動態代理只針對于接口操作。
CGLIB:可以針對沒有接口的java類和有接口的java類。
總結
以上是生活随笔為你收集整理的Spring AOP概述及底层实现原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: elasticsearch高亮显示查询结
- 下一篇: Apache Shiro实现用户登录功能