1、面向切面編程(AOP)的概念:把項目中需要在多處用到的功能,比如日志、安全和事物等集中到一個類中處理,而不用在每個需要用到該功能的地方顯式調用。
2、術語解釋:
橫切關注點:分布應用於多處的功能
切面:橫切關注點可以被模塊化為一個類,這個類被稱為一個切面
通知(advice):切面要完成的工作。Spring的通知有5種類型:before、after、after-returning、after-throwing和around這五種類型。
連接點(joinpoint):連接點表示在何種操作發生時應用切面。比如方法調用時、修改字段時和拋出異常時等等
切點(pointcut):一般用某個包中的類的明確的方法來指定在何處應用切面,應用切面的這個點便稱為切點,一般用切點來指定連接點。
3、使用切點來選擇連接點:
切點用於准確定位該在什么地方應用切面,切點和通知時AOP的基本元素。
編寫切點(使用aspectJ表達式來定位):
在表達式中,一般用and、or和not來代替&&、||和!。
Spring中用bean()指示器來制定在某個bean中的方法被調用時才應用應用切面:
4、在XML中聲明切面:
首先要引入命名空間:
完成配置之后首先定義一個切面類:
然后要將被定義切面的類聲明為一個bean,可以用@component或者<bean>標簽
接着在XML中配置切面
在spring中有很多關於AOP的聲明,來指定前置通知、后置通知和環繞通知等:
5、聲明環繞通知:
環繞通知的方法要傳入一個特殊的參數:
然后用<AOP:around>標簽聲明該通知即可:
6、為通知添加參數: