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