廢話不多說,直接通過乙個demo來看一下吧,這裡我們需要將spring的aop命名空間加入到配置檔案中。spring配置如下:
<?xml version="1.0" encoding="utf-8"?>
增強類advicemethod:
public class advicemethod
}
場景呼叫如下:
public class client
}
輸出了我們想要的效果:
how are you!
waiter greet to john
上面的spring配置雖然完成了我們想要的效果,但是如果我們想要對該切點在乙個切面中的不同增強進行重用怎麼辦呢?spring的aop配置可以宣告切點,如下:
如果希望可以在不同切面進行重用怎麼辦?如下:
前置增強已經說過,就不在提了,下面其他類增強配置方法如下:
後置增強
returning標籤為被增強方法的返回值,注意這個引數的名字必須跟增強的方法的入參名字保持一致。如下:
public class advicemethod
}
環繞增強
aop配置如下:
增強方法如下:
public class advicemethod catch (throwable e)
// 目標方法執行後的邏輯
system.out.println("bye bye!");
}}
丟擲異常增強
aop配置:
其中throwing="iae"對應增強方法的入參,異常的型別。增強方法如下:
public class advicemethod
}
final增強
aop配置:
增強方法如下:
public class advicemethod
}
引介增強
引介增強比較特殊,aop配置如下:
type-matching定義的是需要引介介面實現型別bean
impelment-inte***ce定義引介增強需要實現的介面
default-impl定義需要實現的介面實現的業務邏輯
這樣上層模組就可以通過以下的方式去呼叫。如下:
public class client
}
從而實現waiter類實現了seller介面的方法。
aop的schema配置中繫結連線點資訊的方法如下:
第一,所有增強型別對應的方法第乙個入參都可以宣告為joinpoint。(環繞增強可宣告為proceedingjoinpoint)訪問連線點資訊。
第二,後置增強通過()returing屬性繫結返回值資訊,丟擲異常增強通過throwing屬性訪問連線點方法所丟擲的異常。
第三,所有增強方法都可以通過繫結引數的切點函式繫結連線方法的入參。舉例如下:
aop配置如下:
增強方法的方法入參名字必須和配置的一致,如下:
public class advicemethod
}
advisor對應於spring中的切面概念,它包含乙個切點和增強。基本配置跟aspect的切面配置類似,如下:
增強方法如下:
public class advicemethod implements methodbeforeadvice
}
到此,關於spring的schema配置基本用法就講完了,通過這一章的學習,感覺spring自己提供的基於schema的配置方式比之前自己定義切面,通過註解去實現aop的方式要簡單的多了,
而且在spring的配置檔案中清晰的描述出了橫切關係,便於管理,不得不說我個人非常喜歡這種方式,簡單實用
基於註解的Spring AOP
spring aop 基本概念 url joinpoint api url 1.定義註解 target retention retentionpolicy.runtime documented public inte ce testannotation 2.定義切面 切面 aspect 在sprin...
基於註解SpringAOP實現
aop 動態 指在程式執行期間動態的將某段 切入到指定方法指定位置進行執行的程式設計方式 1 匯入aop模組 spring aop spring aspects org.springframework spring aspects 5.2.7.release 2 定義乙個業務邏輯類 mathcalc...
Spring AOP的基於AspectJ註解開發
1.編寫目標類並配置 這個目標類並沒有實現介面,因此spring會自動用cglib來對其進行動態 public class orderdao void delete void update void find 2.編寫切面類並配置 切面類 public class myaspect 3.使用註解對目...