Spring 2.0 中的前置增強

工程 | Ben Hale | 2006年9月05日 | ...

正如你們大多數人所知,Spring 2.0 的一大改進是添加了 AspectJ 切入點語言,並在總體上更好地與 AspectJ 整合。雖然我認為每個人都相信從長遠來看這將是一個巨大的好處,但它也導致了一些問題。我們發現 Spring AOP 一直有一些行為,而 AspectJ 從來沒有做過。

出現的一個大問題是前置增強的行為。如果您在 Spring 1.x 中使用過 Spring AOP,您可能知道 Spring 允許您在引數傳遞給目標方法之前更改引數值。您可能不知道的是,AspectJ 從未允許這種行為。

這對您(使用者)意味著什麼?這取決於您未來打算做什麼。我們已經決定,如果您繼續使用 AOP Alliance 介面進行 AOP,您將繼續獲得與以往相同的語義;沒有任何改變。如果您將來使用 AspectJ 切入點語言,您將獲得準確的 AspectJ 語義。如果您想使用 AspectJ 的切入點語言,但仍然想更改引數值,這是可能的,但您需要遵守 AspectJ 的語義,並使用環繞增強而不是前置增強。

所以最終,我們仍然設法實現了即插即用的目標,同時在適當的地方堅持 AspectJ 語義。


附:這篇文章是為已故的偉大的“Penc Smith”寫的訃告。如果您參加過 Core Spring 來自 Interface21 的培訓,您就會知道我在說什麼。如果沒有,請在 The Spring ExperienceNo Fluff Just Stuff 上與我見面,我會邊喝一杯邊告訴你這個故事。

獲取 Spring 新聞簡報

透過 Spring 新聞簡報保持聯絡

訂閱

取得領先

VMware 提供培訓和認證,以加速您的進步。

瞭解更多

獲得支援

Tanzu Spring 在一個簡單的訂閱中提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案。

瞭解更多

即將舉行的活動

檢視 Spring 社群中所有即將舉行的活動。

檢視全部