Java spring -- AOP

來源:互聯網
上載者:User

標籤:動態代理   出現   方法調用   err   ima   spec   ring   point   組成   

AOP aspect oriented programing. 面向切面的編程.

編程中會遇到很多在代碼中具有橫向邏輯的代碼, 比如log, 比如效能檢測等代碼, 這些代碼將實際的商務邏輯程式碼封裝含在裡面, 很難做到縱向的抽離這些重複的橫向邏輯代碼. 所以引入了AOP的概念.

1. AOP的術語介紹1.1 連接點

指的是程式中實際的商務邏輯的類, 這些類初始化前後,類的某個方法調用前後, 出現異常後等這些, 所在的特定的位置被稱為連接點.

AOP就是找到這些連接點並進行織入性增強.

連接點由兩個資訊確定: 1. 方法表示的執行點, 2. 相對點表示的方位.

1.2 切點

AOP通過切點定位連接點, 一個切點可以匹配多個連接點. 切點通過org.springframework.aop.pointcut介面進行描述, 作為類和方法的連接點的查詢條件.

1.3 增強

增強是織入到目標類的連接點上的一段程式碼. 增強介面都是帶方位名的, BeforeAdvice, AfterRunningAdvice等.

1.4 目標對象

即為商務邏輯對象

1.5 引介

一種特殊的增強. 為類添加屬性和方法, 實現沒有實現的介面.

1.6 織入

織入是將增強添加到目標類具體連接點上的一個過程.

有三種織入方式, 1. 編譯期間織入(要求特殊的編譯器). 2. 類裝載期間織入(要求特殊的類裝載器). 3.動態代理織入(在運行期間為目標類添加增強產生子類的方式.)

Spring使用3.動態代理織入. AspectJ使用1.2.

1.7 代理

一個類被AOP織入增強後, 就產出一個結果類, 是融合了原來類和增強邏輯的代理類. 根據不同的代理方式, 代理類可能是原來類具有相同介面的類, 也可以是原來類的子類, 所以可以採用與調用原來類相同的方式調用代理類.

1.8 Aspect切面.

切面由切點和增強組成. 包括了橫切路基的定義. 也包括了連接點的定義. Spring AOP就是負責實施切面的架構. 將切面定義的橫切邏輯織入切面指定的連結點當中.

所以AOP的工作重心在於如何將增強應用於目標類的連接點上. 主要包括兩個工作: 1. 如何通過切點和增強定位到連接點. 2. 如何在增強中編寫切面的代碼.

Java spring -- 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.