Advice (通知): 定義在鏈接點作什麼,爲切面加強提供織入接口spa
Pointcut (切點):決定Advice通知應該做用於哪一個鏈接點,對加強的方法的過濾代理
Advisor (通知器):定義應該使用 哪一個Advice 並在哪一個Pointcut 使用它,把Advice 和 Pointcut 結合起來對象
以上概念的具體體現:
繼承
Advice 繼承體系 ,以 BeforeAdvice,AfterAdvice 爲例接口
Pointcut 繼承體系,以 JdkRegexpMethodPointcut 爲例get
Advisor 繼承體系,以 DefaultPointcutAdvisor 爲例it
以 ProxyFactoryBean 爲例io
ProxyFactoryBean 配置 配置
1. 定義Advisor 使用的通知器方法
2. 定義ProxyFactoryBean 屬性有
proxyInterfaces 代理接口
interceptorNames 通知器
target 目標加強的對象
爲Proxy代理對象配置Advisor initializeAdvisorChain
得到代理對象 getSingletonInstance
AopProxyFactory 生成 AopProxy ,兩個實現
AopProxy 代理對象 如何發揮攔截做用和實現AOP功能的?
AOP是怎樣對目標對象加強的?
ReflectiveMethodInvocation proceed 會逐個運行攔截器的攔截方法,若是運行到攔截器尾,直接調用目標對象的實現方法,不然,沿着攔截器繼續進行,獲得下一個攔截器,經過這個攔截器進行mathes判斷是否適用於橫切加強的場合。若是是,從攔截器中獲得通知器,並啓動通知器的invoke方法進行切面加強,在這個過程結束後,會迭代調用proceed方法。