Spring 3.0 AOP (一)AOP 術語

来源:http://www.cnblogs.com/08shiyan/archive/2016/01/26/5151703.html
-Advertisement-
Play Games

關於AOP、之前我已寫過一個系列的隨筆: 《自己實現簡單的AOP》,它的關註點在於實現、實現語言是C#,實現方式為 自定義實現RealProxy 抽象類、重寫Invoke方法,以便進行方法調用的攔截、藉此實現AOP。感興趣的園友可以去瞅瞅。 今天、我們來看一下Spring中的AOP,本隨筆著重...


  關於AOP、之前我已寫過一個系列的隨筆: 《自己實現簡單的AOP》,它的關註點在於實現、實現語言是C#,實現方式為 自定義實現 RealProxy 抽象類、重寫Invoke方法,以便進行方法調用的攔截、藉此實現AOP。感興趣的園友可以去瞅瞅。

  今天、我們來看一下Spring中的AOP,本隨筆著重關註AOP術語。

  先說一句廢話:如果你對AOP不是很熟悉、第一次看到這些術語可能會有點迷惑,不過沒有關係、堅持繼續向下看,然後再反過來看一遍,有些東西就能恍然大悟了。

連接點(Joinpoint) 

   連接點:連接點、點,它是一個位置、是指程式執行的特定位置,如:類初始化前、類初始化後、某個方法執行前、某個方法執行後、方法拋出異常之後 等等位置。而,Spring僅支持 方法的連接點, 即僅可以在方法執行前、方法執行後、方法拋出異常時 及  方法執行前後 4 類連接點。

   我們都知道黑客攻擊系統都需要找到突破口,如果沒有突破口就沒法進行攻擊。在某種程度上來說、AOP有點像黑客(因為它要向程式中織入代碼邏輯),而連接點就是這個突破口。

  連接點需要由兩點信息來確定:一個是 方法 。第二個是 相對於方法的執行方位(比如:方法執行“前”、方法執行“後”、方法執行“前後”、方法拋出異常“時”)。【執行方位  存在於 增強中】

 

切點(Pointcut) 

  我(本隨筆作者)對切點的理解為,切點:查找連接點的條件,更確切一點是查找連接點所表示的方法的條件。

 

增強(Advice) 

   增強:即一段代碼,是想要織入的代碼邏輯。 並且還附帶了  相對於方法的執行方位。

   因此:切點 + 增強中的  相對於方法的執行方位  = 連接點。  

目標對象(Target) 

    是需要織入增強的目標類。

引介(Introduction) 

   引介:引介是一種特殊的增強:它可以為目標類增加屬性和方法,以此、可以實現新介面。

織入(Weaving) 

   織入:織入是將增強添加到目標類具體連接點上的過程,AOP就像一臺織布機,將目標類、增強或引介通過AOP這台織布機天衣無縫地編織在一起。

代理(Proxy) 

   一個類被AOP織入增強後,就產生了一個結果類,這個結果類就是代理。它融合了原類和增強邏輯。代理類 和 原類 擁有相同的介面,所以可以像原類一樣調用代理類。

切麵(Aspect) 

  切麵由 切點 和 增強(或引介)組成,它既包括了橫切邏輯、也包含了連接點的定義,Spring AOP 就是負責實施切麵的框架,它將切麵所定義的橫切邏輯織入切麵中所指定的連接點上。 

  AOP 的工作重心在於如何將增強應用於目標對象的連接點上。這裡包含兩個工作:

  1、如何通過切點 和 增強 定位連接點。

  2、如何在增強中編寫橫切邏輯代碼。

  本系列隨筆將重點圍繞破以上兩點來展開進行。

 

  聲明:《Spring 3.0 AOP》 系列隨筆為《Spring 3.0 就是這麼簡單》讀書筆記、並附加作者自己的認知。

  (未完待續...)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...