1,切點的說明,我們在上篇文章中使用正則表達式定義了切點,在此我對這段正則表達式做一個說明,幫助沒基礎的同學方便理解。
execution(* com.spring.aop.UserServiceImpl.showUser(..))
execution:表示執行這個方法的時候會觸發
*:表示任意返回類型的方法
com.spring.aop.UserServiceImpl:表示全類名
showUser:表示被攔截的方法
(..):表示任意的參數
2,織入的理解
什麼是織入,織入是我們一個形象的比喻,大家可以搜索下織布機,看看織布機的一個工作方式,會有更感性的認識;那麼在Spring中,織入是指生成代理對象並將切面邏輯放入約定流程的過程。
關於生成代理對象,Spring的規則如下:
當類的實現存在接口時,採用JDK實現動態代理;
如果沒有接口,則採用CGLIB的方式來生成代理;
我們可以通過debug模式,來觀察這其中的結果:
而如果我們將這個接口的關係去掉,我們再一次斷點跟蹤,來看結果:
閱讀更多 互聯網十年老兵 的文章