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

資訊專欄INFORMATION COLUMN

<spring 3.x企業應用開發實戰>讀書筆記-基于注解和聲明式的aop

馬龍駒 / 3113人閱讀

摘要:配置切面編程方式實現說結賬說要點什么注解表示前置增強后面的切點表達式表示在目標類的方法織入增強,方法可以帶任意的傳入參數和任意的返回值。類相當于上一篇中的增強切點,切面三者聯合表達的信息。

@AspectJ配置切面 編程方式實現
public class Waiter {
    public void check(String name){
        System.out.println("waiter說:結賬?"+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注解表示前置增強,后面的切點表達式表示在目標類的serve()方法織入增強,serve()方法可以帶任意的傳入參數和任意的返回值。
PreGreeting類通過注解,將切點,增強類型和增強的橫切邏輯組合在一起。PreGreeting類相當于上一篇中的BeforeAdvice(增強),NameMatchMethodPointcut(切點),DefaultPointcutAdvisor(切面)三者聯合表達的信息。

        Waiter waiter=new Waiter();
        AspectJProxyFactory factory=new AspectJProxyFactory();
        factory.setTarget(waiter);//設置目標類
        factory.addAspect(PreGreeting.class);//添加切面
        Waiter proxy=factory.getProxy();
        proxy.serve("TheViper");
        proxy.check("TheViper");
how are you!
waiter說:要點什么?TheViper
waiter說:結賬?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創建代理,完成切面織入

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

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

schema配置切面 配置命名切點

需要引入aspectjweaver

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

增強不用像上一篇中那樣,需要繼承特定類或實現特定接口。


    
    
    
        
        
            
        
    
  

匹配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"

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

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

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

public class Waiter {
    public void check(String name){
        System.out.println("waiter說:結賬?"+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說:結賬?TheViper
配置順序問題

命名切點只能被當前內定義的元素訪問到,中的配置順序必須是=>=>

各種增強類型 后置增強

    ...
    
        
    
環繞增強

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

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

throwing屬性聲明需要綁定的異常對象,指定的異常名必須和增強方法對應的傳入參數一致

final增強

    ...
    
        
    
引介增強

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64687.html

相關文章

  • &lt;spring 3.x企業應用開發實戰&gt;讀書筆記-aop基礎

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

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

    摘要:基于和命名空間的聲明式事務管理目前推薦的方式,其最大特點是與結合緊密,可以充分利用切點表達式的強大支持,使得管理事務更加靈活?;诘娜⒔夥绞綄⒙暶魇绞聞展芾砗喕搅藰O致。 Java面試通關手冊(Java學習指南):https://github.com/Snailclimb/Java_Guide 歷史回顧:可能是最漂亮的Spring事務管理詳解 Spring事務管理 Spring支持兩...

    lushan 評論0 收藏0
  • Spring實戰讀書筆記——Spring簡介

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

    CKJOKER 評論0 收藏0
  • Spring知識——事務解析

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

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

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

    ckllj 評論0 收藏0

發表評論

0條評論

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