Spring AOP實踐

不要亂摸發表於2018-03-11

Spring AOP和AspectJ是AOP的兩種不同實現。前者是動態代理,後者是靜態代理。

AOP的作用就是分離關注點,它將與業務無關的邏輯抽離出來單獨封裝成模組,實現核心業務與通用的邏輯的解耦。

首先,有幾個概念需要了解一下:

  • aspect(方面):簡單的理解,將公共的邏輯剝離出來並封裝成模組,這個模組就是aspect,可以理解成就是一個功能,比如:事務就是一個功能
  • joinpoint(連線點):在Spring AOP中連線點就是一個方法
  • advice(通知):在特定的連線點所採取的動作
  • pointcut(切入點):可以這樣理解,切入點就是指明哪些方法呼叫需要應用通知
  • target object(目標物件):實際呼叫的方法

為了方便理解,我們這樣想:aspect就是我們要實現的功能,那麼這個功能所要做的事情就是advice,這些功能應用到哪些地方就是pointcut。

在Spring AOP中,定義一個AOP功能只需要三步:

1、宣告aspect

2、定義joinpoint

3、定義advice

 

下面的示例採用了兩種方式來實現一個AOP功能

工程結構如下

依賴的jar如下

 

第一種:基於@AspectJ註解的方式

第二種:基於XML配置檔案的方式

 

相關文章