亚洲一区亚洲二区亚洲三区,国产成人高清在线,久久久精品成人免费看,999久久久免费精品国产牛牛,青草视频在线观看完整版,狠狠夜色午夜久久综合热91,日韩精品视频在线免费观看

AOP 那點事兒(續(xù)集) -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.ishadingyu.com - 電腦資料】

    在上篇中,我們從寫死代碼,到使用代理;從編程式 Spring AOP 到聲明式 Spring AOP,

AOP 那點事兒(續(xù)集)

。一切都朝著簡單實用主義的方向在發(fā)展。沿著 Spring AOP 的方向,Rod Johnson(老羅)花了不少心思,都是為了讓我們使用 Spring 框架時不會感受到麻煩,但事實卻并非如此。那么,后來老羅究竟對 Spring AOP 做了哪些改進呢?

    現(xiàn)在繼續(xù)!

    9. Spring AOP:切面

    之前談到的 AOP 框架其實可以將它理解為一個 框架,但這個 似乎非常武斷。比如說,如果它攔截了一個類,那么它就攔截了這個類中所有的方法。類似地,當我們在使用動態(tài)代理的時候,其實也遇到了這個問題。需要在代碼中對所攔截的方法名加以判斷,才能過濾出我們需要攔截的方法,想想這種做法確實不太優(yōu)雅。在大量的真實項目中,似乎我們只需要攔截特定的方法就行了,沒必要攔截所有的方法。于是,老羅同志借助了 AOP 的一個很重要的工具,Advisor(切面),來解決這個問題。它也是 AOP 中的核心!是我們關(guān)注的重點!

    也就是說,我們可以通過切面,將增強類與攔截匹配條件組合在一起,然后將這個切面配置到 ProxyFactory 中,從而生成代理。

    這里提到這個“攔截匹配條件”在 AOP 中就叫做 Pointcut(切點),其實說白了就是一個基于表達式的攔截條件罷了。

    歸納一下,Advisor(切面)封裝了 Advice(增強)與 Pointcut(切點 )。當您理解了這句話后,就往下看吧。

    我在 GreetingImpl 類中故意增加了兩個方法,都以“good”開頭。下面要做的就是攔截這兩個新增的方法,而對 sayHello() 方法不作攔截。

@Componentpublic class GreetingImpl implements Greeting {    @Override    public void sayHello(String name) {        System.out.println("Hello! " + name);    }    public void goodMorning(String name) {        System.out.println("Good Morning! " + name);    }    public void goodNight(String name) {        System.out.println("Good Night! " + name);    }}

    在 Spring AOP 中,老羅已經(jīng)給我們提供了許多切面類了,這些切面類我個人感覺最好用的就是基于正則表達式的切面類,

電腦資料

AOP 那點事兒(續(xù)集)》(http://www.ishadingyu.com)?纯茨兔靼琢耍

<b><b><b></bean></bean></beans>

    使用 元素來進行 AOP 配置,在其子元素中配置切面,包括增強類型、目標方法、切點等信息。

    無論您是不能使用注解,還是不愿意使用注解,Spring AOP 都能為您提供全方位的服務。

    好了,我所知道的比較實用的 AOP 技術(shù)都在這里了,當然還有一些更為高級的特性,由于個人精力有限,這里就不再深入了。

    還是依照慣例,給一張牛逼的高清 思維導圖,總結(jié)一下以上各個知識點:

   

    再來一張表格,總結(jié)一下各類增強類型所對應的解決方案:

增強類型基于 AOP 接口基于 @Aspect基于Before Advice(前置增強)MethodBeforeAdvice@BeforeAfterAdvice(后置增強)AfterReturningAdvice@AfterAroundAdvice(環(huán)繞增強)MethodInterceptor@AroundThrowsAdvice(拋出增強ThrowsAdvice@AfterThrowingIntroductionAdvice(引入增強)DelegatingIntroductionInterceptor@DeclareParents

    最后給一張 UML 類圖描述一下 Spring AOP 的整體架構(gòu):

最新文章