大家都知道,AOP模塊是 Spring的核心模塊,雖然在Java社區(qū)里 Aspectj是最完整的AOP
框架,但 Spring AOP也提供了另外一種實現(xiàn),這種實現(xiàn)并不是 Aspectj的競爭者,相反,
Spring AOP還將 Aspectj集成了進來,為IoC容器和 Spring應(yīng)用開發(fā)提供了一個一致性的AOP解決方案。
Spring AOP的核心技術(shù)是上一小節(jié)介紹的JDK動態(tài)代理技術(shù)。以動態(tài)代理技術(shù)為基礎(chǔ),
設(shè)計出了一系列AOP的橫切實現(xiàn),比如前置通知、返回通知、異常通知等。同時, SpringAOP還提供了一系列的Pointcut來匹配切入點,可以使用現(xiàn)有的切入點來設(shè)計橫切面,也可以擴展相關(guān)的 Pointcut方法來實現(xiàn)切入需求。
在Spring AOP中,雖然對于AOP的使用者來說,只需要配置相關(guān)的Bean定義即可,但仔細(xì)分析 Spring AOP的內(nèi)部設(shè)計可以看到,為了讓AOP起作用,需要完成一系列過程,比如,需要為目標(biāo)對象建立代理對象,這個代理對象可以通過使用JDK的 Proxy來完成,也可以通過第三方的類生成器 CGLIB來完成。然后,還需要啟動代理對象的攔截器來完成各種橫切面的織入,這一系列的織入設(shè)計是通過一系列 Adapter來實現(xiàn)的。通過一系列Adapter的設(shè)計,可以把AOP的橫切面設(shè)計和 Proxy模式有機地結(jié)合起來,從而實現(xiàn)在AOP中定義好的各種織入方式。具體的設(shè)計實現(xiàn)可以參考后面的內(nèi)容,這里只是簡要介紹一下。
咨詢熱線
010-85377344
135-21581588
微信客服
QQ客服
3026106565 點擊咨詢