aop是ioc的一個擴展功能,先有的ioc,再有的aop,只是在ioc的整個流程中新增的一個擴展點而已:BeanPostProcessor
底層實作用的是動態代理
AOP應用場景
場景一: 記錄日志
場景二: 監控方法運行時間 (監控性能)
場景三: 權限控制
場景四: 快取優化 (第一次呼叫查詢資料庫,將查詢結果放入記憶體物件, 第二次呼叫, 直接從記憶體物件回傳,不需要查詢資料庫 )
場景五: 事務管理 (呼叫方法前開啟事務, 呼叫方法后提交關閉事務 )
bean的整個創建程序中有一個步驟可以對bean進行擴展實作,aop本身就是一個擴展功能,所以在BeanPostProcessor的后置處理方法中,來進行實作,
1、代理物件的創建程序(advice,切面,切點)
2、通過jdk或者cglib的方式來生成代理物件
3、在執行方法呼叫的時候,會呼叫到生成的位元組碼檔案中,直接會找到DynamicAdvicedInterceptor類中的intercept方法,從此方法開始執行
4、根據之前定義好的通知來生成攔截器鏈
5、從攔截器鏈中依次獲取每一個通知開始進行執行,在執行程序中,為了方便找到下一個通知是哪一個,會有一個InvocationInterceptor的物件,找的時候是從-1開始查找并且執行的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/418060.html
標籤:Java
