国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

<spring 3.x企業(yè)應(yīng)用開發(fā)實戰(zhàn)>讀書筆記-基于注解和聲明式的aop

馬龍駒 / 3111人閱讀

摘要:配置切面編程方式實現(xiàn)說結(jié)賬說要點什么注解表示前置增強后面的切點表達式表示在目標(biāo)類的方法織入增強,方法可以帶任意的傳入?yún)?shù)和任意的返回值。類相當(dāng)于上一篇中的增強切點,切面三者聯(lián)合表達的信息。

@AspectJ配置切面 編程方式實現(xiàn)
public class Waiter {
    public void check(String name){
        System.out.println("waiter說:結(jié)賬?"+name);
    }
    public void serve(String name){
        System.out.println("waiter說:要點什么?"+name);
    }
}
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect
public class PreGreeting {
    @Before("execution(* serve(..))")
    public void beforeGreeting(){
        System.out.println("how are you!");
    }
}

@Before注解表示前置增強,后面的切點表達式表示在目標(biāo)類的serve()方法織入增強,serve()方法可以帶任意的傳入?yún)?shù)和任意的返回值。
PreGreeting類通過注解,將切點,增強類型和增強的橫切邏輯組合在一起。PreGreeting類相當(dāng)于上一篇中的BeforeAdvice(增強),NameMatchMethodPointcut(切點)DefaultPointcutAdvisor(切面)三者聯(lián)合表達的信息。

        Waiter waiter=new Waiter();
        AspectJProxyFactory factory=new AspectJProxyFactory();
        factory.setTarget(waiter);//設(shè)置目標(biāo)類
        factory.addAspect(PreGreeting.class);//添加切面
        Waiter proxy=factory.getProxy();
        proxy.serve("TheViper");
        proxy.check("TheViper");
how are you!
waiter說:要點什么?TheViper
waiter說:結(jié)賬?TheViper
通過配置使用

    
    
    

引用aop命名空間

xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="...  
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop.xsd"

自動為spring容器中那些匹配@AspectJ切面的Bean創(chuàng)建代理,完成切面織入

        ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
        Waiter waiter=(Waiter)ctx.getBean("waiter");
        waiter.serve("TheViper");
        waiter.check("TheViper");

使用的時候,直接獲取bean操作就可以了,不用像前面還要創(chuàng)建AspectJProxyFactory,設(shè)置好代理才能用。

schema配置切面 配置命名切點

需要引入aspectjweaver

public class GreetBefore {
    public void say(String name){
        System.out.println("hallo!"+name);
    }
}

增強不用像上一篇中那樣,需要繼承特定類或?qū)崿F(xiàn)特定接口。


    
    
    
        
        
            
        
    
  

匹配Waiter類中的check()方法。

需要引入aop命名空間

xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="... http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop.xsd"

定義切面,其內(nèi)部可以定義多個增強,ref屬性指定引用的具體增強

聲明了一個前置增強,通過pointcut-ref屬性引用切點,method屬性指定增強中哪個方法用于具體的增強行為

定義切點,expression屬性設(shè)置切點表達式,其語法和@AspectJ中的語法完全相同。

public class Waiter {
    public void check(String name){
        System.out.println("waiter說:結(jié)賬?"+name);
    }
    public void serve(String name){
        System.out.println("waiter說:要點什么?"+name);
    }
}
        ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
        Waiter waiter=(Waiter)ctx.getBean("waiterTarget");
        waiter.serve("TheViper");
        waiter.check("TheViper");
waiter說:要點什么?TheViper
hallo!TheViper
waiter說:結(jié)賬?TheViper
配置順序問題

命名切點只能被當(dāng)前內(nèi)定義的元素訪問到,中的配置順序必須是=>=>

各種增強類型 后置增強

    ...
    
        
    
環(huán)繞增強

    ...
    
        
    
    public void aroundMethod(ProceedingJoinPoint pjp){
    //pjp可以訪問到環(huán)繞增強的連接點信息
        ...
    }
拋出異常增強

    ...
    
        
    
public void afterThrowingMethod(Exception exception){
    ...
}

throwing屬性聲明需要綁定的異常對象,指定的異常名必須和增強方法對應(yīng)的傳入?yún)?shù)一致

final增強

    ...
    
        
    
引介增強

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/64687.html

相關(guān)文章

  • &lt;spring 3.x企業(yè)應(yīng)用開發(fā)實戰(zhàn)&gt;讀書筆記-aop基礎(chǔ)

    摘要:是什么是面向切面編程的簡稱。負責(zé)實施切面,它將切面所定義的橫切邏輯織入到切面所指定的連接點鐘。靜態(tài)正則表達式匹配切面是正則表達式方法匹配的切面實現(xiàn)類。流程切面的流程切面由和實現(xiàn)。 aop是什么 aop是面向切面編程(aspect oriented programing)的簡稱。aop的出現(xiàn)并不是要完全替代oop,僅是作為oop的有益補充。aop的應(yīng)用場合是有限的,一般只適合于那些具有橫...

    isaced 評論0 收藏0
  • Spring編程式和聲明式事務(wù)實例講解

    摘要:基于和命名空間的聲明式事務(wù)管理目前推薦的方式,其最大特點是與結(jié)合緊密,可以充分利用切點表達式的強大支持,使得管理事務(wù)更加靈活。基于的全注解方式將聲明式事務(wù)管理簡化到了極致。 Java面試通關(guān)手冊(Java學(xué)習(xí)指南):https://github.com/Snailclimb/Java_Guide 歷史回顧:可能是最漂亮的Spring事務(wù)管理詳解 Spring事務(wù)管理 Spring支持兩...

    lushan 評論0 收藏0
  • Spring實戰(zhàn)讀書筆記——Spring簡介

    摘要:如何降低開發(fā)的復(fù)雜性最小侵入編程通過面向接口和依賴注入實現(xiàn)松耦合基于編程慣例和切面進行聲明式編程通過模板減少樣板式代碼容器在應(yīng)用中,不再由對象自行創(chuàng)建或管理它們之間的依賴關(guān)系容器負責(zé)創(chuàng)建對象裝配對象配置它們并管理它們的整個生命周期。 歡迎大家關(guān)注我的微信公眾號,一起探討Java相關(guān)技術(shù) showImg(https://segmentfault.com/img/bVboaBO?w=129...

    CKJOKER 評論0 收藏0
  • Spring知識——事務(wù)解析

    摘要:編程式事務(wù)指的是通過編碼方式實現(xiàn)事務(wù)聲明式事務(wù)基于將具體業(yè)務(wù)邏輯與事務(wù)處理解耦。聲明式事務(wù)管理使業(yè)務(wù)代碼邏輯不受污染因此在實際使用中聲明式事務(wù)用的比較多。聲明式事務(wù)有兩種方式,一種是在配置文件中做相關(guān)的事務(wù)規(guī)則聲明,另一種是基于注解的方式。 事務(wù)管理是應(yīng)用系統(tǒng)開發(fā)中必不可少的一部分。Spring 為事務(wù)管理提供了豐富的功能支持。Spring 事務(wù)管理分為編碼式和聲明式的兩種方式。編程式...

    tuomao 評論0 收藏0
  • MyBatis集成Spring

    摘要:各方面有各種常見的良好示例,包括日志記錄,聲明式事務(wù),安全性,緩存等。聲明式事務(wù)管理這意味著你從業(yè)務(wù)代碼中分離事務(wù)管理。但作為一種橫切關(guān)注點,聲明式事務(wù)管理可以使用方法進行模塊化。支持使用框架的聲明式事務(wù)管理。 本章主要內(nèi)容包括Spring簡介、Spring的兩大特性(IOC和AOP)、事務(wù)MyBatis集成Spring等。也許有讀者會疑惑,明明是MyBatis-Plus實戰(zhàn),怎么還講...

    ckllj 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<