取得領先
VMware 提供培訓和認證,以加速您的進步。
瞭解更多正如你們大多數人所知,Spring 2.0 的一大改進是添加了 AspectJ 切入點語言,並在總體上更好地與 AspectJ 整合。雖然我認為每個人都相信從長遠來看這將是一個巨大的好處,但它也導致了一些問題。我們發現 Spring AOP 一直有一些行為,而 AspectJ 從來沒有做過。
出現的一個大問題是前置增強的行為。如果您在 Spring 1.x 中使用過 Spring AOP,您可能知道 Spring 允許您在引數傳遞給目標方法之前更改引數值。您可能不知道的是,AspectJ 從未允許這種行為。
這對您(使用者)意味著什麼?這取決於您未來打算做什麼。我們已經決定,如果您繼續使用 AOP Alliance 介面進行 AOP,您將繼續獲得與以往相同的語義;沒有任何改變。如果您將來使用 AspectJ 切入點語言,您將獲得準確的 AspectJ 語義。如果您想使用 AspectJ 的切入點語言,但仍然想更改引數值,這是可能的,但您需要遵守 AspectJ 的語義,並使用環繞增強而不是前置增強。
所以最終,我們仍然設法實現了即插即用的目標,同時在適當的地方堅持 AspectJ 語義。