5.1 AOP基本思想

來源:互聯網
上載者:User

 

在第4章中,筆者通過事件傳遞的機制實現了日誌的輸出,其實Spring的AOP在這方面提供了更強大的功能。本章將首先讓讀者瞭解AOP的基本思想,然後通過對Java代理機制進行分析,引出AOP的3個關鍵概念,接著對Spring的AOP進行介紹,最後通過一個完整的執行個體讓讀者掌握Spring AOP的使用方法。

5.1  AOP基本思想

AOP的意思是面向方面編程,英文全稱是Aspect Oriented Programming,它使開發人員可以更好地將本不該彼此粘合在一起的功能分離開。

5.1.1  認識AOP

開發人員在編寫應用程式時,通常包含兩種代碼:一種是和業務系統有關的代碼,一是和業務系統關係不大的代碼,例如日誌、許可權、異常處理、交易處理等。以前編寫代碼時,這兩種代碼基本是寫在一起的,這樣在程式中,到處充滿著相同或類似的代碼,例如日誌資訊的輸出,每個方法都要寫日誌的輸出,不利於程式的維護。而AOP就是使這兩種代碼分離的思想。使用AOP,就不用在商務邏輯中實現與業務功能關係不大的代碼,從而降低了兩種代碼的耦合性,達到易於維護和重用的目的。

AOP,從字面的意思來理解就是面向方面編程,但卻容易讓初學者一頭霧水,很多資料也都對AOP進行過解釋,但過多地從理論的角度進行講解其實用性,這裡不再多講,僅用一個例子來說明:基本上每個方法都要用日誌進行記錄,那麼如果按照物件導向的思路來說,就是每個對象都有記錄日誌這樣一個行為。要在每個方法裡添加日誌的資訊,必然會產生大量的重複代碼,但可以將記錄日誌看作是一個橫切面,所有對這些方法的調用都要經過這個橫切面,然後在這個橫切面進行記錄日誌的操作,這樣就達到代碼重用和易於維護的目的了,這就是AOP的思想。

5.1.2  AOP與OOP對比分析

OOP(物件導向編程)對現代編程產生了深遠的影響,經過多年的發展,目前已日趨成熟,它能很好地解決軟體系統中角色劃分的問題,藉助於物件導向的分析、設計和實現,開發人員可以將現實領域的實體轉換成軟體系統中的對象,從而很自然地完成從現實到軟體的轉換。但OOP並不是一種完美的思想,在某些方面,OOP也有其不足之處。比如在日誌、交易處理、許可權管理等方面,當應用OOP將這些內容封裝為對象的行為時,會產生大量的重複代碼,雖然通過一些方法可以減少這種重複,但卻不能徹底地解決該問題,於是AOP出現了。前面講過AOP能夠降低代碼的耦合性,使得代碼易於維護和重用。一個應用程式分為核心關注點和橫切關注點。核心關注點和具體應用的功能相關,而橫切關注點存在於整個系統的範圍內。

在AOP裡,每個關注點的實現並不知道是否有其他關注點關注它,這是AOP和OOP的主要區別。在AOP裡,組合的流向是從橫切關注點到主關注點,而OOP中組合的流向則是從主關注點到橫切關注點。從這點可以看出AOP和OOP它們所關注的對象是不同的,所以AOP可以和OOP很好地共存,AOP是OOP的有益補充,而不是其對立面。

5.1.3  AOP與Java的代理機制

AOP是一種思想,它和具體的實現技術無關。任何一種符合AOP思想的技術實現,都可以看作是AOP的實現。

JDK 1.3以後,Java提供了動態代理的機制。通過Java的動態代理機制,就可以很容易地實現AOP的思想。實際上Spring的AOP也是建立在Java的代理機制之上的。要理解Spring的AOP,先來瞭解Java的代理機制。下面主要通過一個輸出日誌的執行個體來使讀者先瞭解Java的代理機制,從而引出AOP的幾個關鍵點。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.