Spring AOP原始碼分析
阿新 • • 發佈:2018-11-03
概述
定義
官方定義:Aspect-Oriented Programming (AOP) complements Object-Oriented Programming (OOP) by providing another way of thinking about program structure.
面向切面程式設計是對面向物件程式設計的補充,它提供了另一種關於程式結構的思考方式
關注點
面向物件程式設計關注的是物件和物件的行為
面向切面程式設計關注的是多個類的某些方法(橫切多個類的一個關注點模組)
涉及概念
- Aspect:切面,官方解釋 a modularization of a concern that cuts across multiple classes ( 橫切多個類的一個關注點模組),簡單說就是對類具體行為的關注點集合
- Join point:連線點,一個連線點通常代表著一個方法的呼叫,通過獲取連線點,我們可以控制在方法執行前後做一些控制,或是新增一些操作(代理)
- Advice:通知,切面在特定連線點上產生的動作,也就是我們要通過AOP實現的操作,型別:環繞通知aroud,前置通知before,後置通知after
- Target:目標物件,被一個或多個切面通知的物件,也被稱為被通知物件
- Proxy Pattern:代理模式(1 控制被訪問物件,2 給被訪問物件提供額外功能)