詳細解讀 Spring AOP 面向切面編程(二)

本文是《詳細解讀 Spring AOP 面向切面編程(一)》的續集。

在上篇中,咱們從寫死代碼,到使用代理;從編程式 Spring AOP 到聲明式 Spring AOP。一切都朝着簡單實用主義的方向在發展。沿着 Spring AOP 的方向,Rod Johnson(老羅)花了很多心思,都是爲了讓咱們使用 Spring 框架時不會感覺到麻煩,但事實卻並不是如此。那麼,後來老羅究竟對 Spring AOP 作了哪些改進呢?
如今繼續!spring

9. Spring AOP:切面

以前談到的 AOP 框架其實能夠將它理解爲一個攔截器框架,但這個攔截器彷佛很是武斷。好比說,若是它攔截了一個類,那麼它就攔截了這個類中全部的方法。相似地,當咱們在使用動態代理的時候,其實也遇到了這個問題。須要在代碼中對所攔截的方法名加以判斷,才能過濾出咱們須要攔截的方法,想一想這種作法確實不太優雅。在大量的真實項目中,彷佛咱們只須要攔截特定的方法就好了,不必攔截全部的方法。因而,老羅同志藉助了 AOP 的一個很重要的工具,Advisor(切面),來解決這個問題。它也是 AOP 中的核心!是咱們關注的重點!
也就是說,咱們能夠經過切面,將加強類與攔截匹配條件組合在一塊兒,而後將這個切面配置到 ProxyFactory 中,從而生成代理。
這裏提到這個「攔截匹配條件」在 AOP 中就叫作 Pointcut(切點),其實說白了就是一個基於表達式的攔截條件罷了。
概括一下,Advisor(切面)封裝了 Advice(加強)與 Pointcut(切點 )。當您理解了這句話後,就往下看吧。
我在 GreetingImpl 類中故意增長了兩個方法,都以「good」開頭。下面要作的就是攔截這兩個新增的方法,而對 sayHello() 方法不做攔截。
編程

相關文章
相關標籤/搜索