AspectJ 框架 spring 實現 AOP?
我們前面共享了 spring 完成 AOP 的辦法,看著有那麼一丟丟的麻煩,今日我們來了解一個完成方式簡略,用起來更便利的結構叫做AspectJ。
AspectJ
AspectJ 是什麼
AspectJ 是一個面向切面的結構,他定義了 AOP 的一些語法,有一個專門的位元組碼生成器來生成恪守 java 規範的 class 文件。
AspectJ 的告訴類型不僅包括我們之前了解過的四種告訴:前置告訴、後置告訴、盤繞告訴和反常告訴,而且還多出一種最終告訴即無論程序是否正常履行,最終告訴的代碼會得到履行。
為什麼說 AspectJ 更為簡略,更加便利呢?
原因就是切入點表達式,切入點表達式能夠標識切面織入到哪些類的那些辦法傍邊,就不需要像我們之前利用 spring 完成 AOP 那樣各種配置。只要把切面的完成配置好了,再把這個切入點表達式寫好就能夠了。
語法格式如下:
execution(
modifiers-pattern?
//訪問許可權匹配 如public、protected
ret-type-pattern
//返回值類型匹配
declaring-type-pattern?
//全限定性類名
name-pattern(param-pattern)
//辦法名(參數名)
throws-pattern?
//拋出反常類型
)
注意:中心以空格隔開,有問號的特點表明能夠省略。
特殊符號
a: * 代表0到多個恣意字元
b: .. 放在辦法參數中 ,代表恣意個參數 ,放在包名後面表明當前包及其所有子包途徑
c: + 放在類名後,表明當前類及其子類,放在介面後,表明當前介面及其完成類
例如:
a:execution(public * *(..))
表明恣意的 public 辦法
b:execution(* set *(..))
表明恣意包括以 set 字元最初的辦法
AspectJ+Spring的環境搭建
引進jar包
aopalliance-1.0.jar
spring-aop-4.2.1.RELEASE.jar
aspectjweaver-1.6.6.jar
spring-aspects-4.2.1.RELEASE.jar
引進aop的約束
xml配置方式
編寫切面類,在切面類裡邊定義各種告訴的完成辦法。
在配置文件裡邊對 aop 進行配置
首要先註冊我們的完成類和切面,之後進行 AspectJ的AOP的配置,進行一下測驗
我們就只測驗一下前置告訴哈,剩餘的小夥伴們能夠自己敲一下代碼測驗一下
基於註解方式
編寫切面類,加上@Aspect註解,完成各種告訴,在完成告訴的辦法上加上告訴的註解以及切入點表達式的註解。
在配置文件註冊切面,且加上aspectJ的自動署理
測驗類的話和上面一樣,就是把載入的配置文件換一下。
好的今日的共享就到這裡
怎麼樣我寫理解了嗎?
給大家共享一個結構
好開心!
TAG:java學習吧 |