<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    最愛Java

    書山有路勤為徑,學海無涯苦作舟

    《AspectJ Cookbook》讀書筆記十五: 定義方面的關系

    一.繼承切入點定義
            創建一個抽象類。使用合適的public、protected或default訪問修飾符在抽象方面內定義可重用的切入點邏輯。最后,把抽象方面繼承進子方面中,以重用聲明的切入點。

    package com.aspectj;

    public abstract aspect BasePointcutDefinitionsAspect {
        
    public pointcut callPointcut() : call(void MyClass.foo(int,String));
    }

     

    package com.aspectj;

    public aspect ReusePointcutsRecipe extends BasePointcutDefinitionsAspect {
        
    //Advice declaration
        before():callPointcut()&&!within(ReusePointcutsRecipe+{
            System.out.println(
    "---------- Aspect Advice Logic ----------");
            System.out.println(
    "In the advice attached to the call point cut");
            System.out.println(
    "Target: " + thisJoinPoint.getTarget());
            System.out.println(
    "This: " + thisJoinPoint.getThis());
            System.out.println(
    "-----------------------------------------");        
        }

    }




    二.實現抽象切入點
            在聲明切入點和周圍的方面時,使用abstract關鍵字,并且不要提供任何切入點邏輯。

    package com.aspectj;

    public abstract aspect BaseAbstractAspect {
        
    /**
         * Specifies an abstract pointcut placeholder
         * for derived aspects to specify
         
    */

        
    public abstract pointcut abstractBasepointcut();
        
        
    /**
         * Specifies calling advice whenever a join point
         * picked by the abstractBasePointcut (specified
         * by specialized aspects) is encountered, and not within
         * this aspect or any inheriting aspects.
         
    */

        pointcut runAdvicePointcut() : abstractBasepointcut() 
    && !within(BaseAbstractAspect+);
    }

     

    package com.aspectj;

    public aspect AbstractImplementationAspect extends BaseAbstractAspect {
        
    /**
         * Specifies calling advice whenever a method
         * matching the following rules gets called:
         * 
         * Class Name: MyClass
         * Method Name:foo
         * Method Return:void
         * Method Parameters:an int followed by a string
         
    */

        
    public pointcut abstractBasepointcut():call(void MyClass.foo(int,String));
        
        
    //Advice declaration
        before():runAdvicePointcut(){
            System.out.println(
    "---------- Aspect Advice Logic ----------");
            System.out.println(
    "Signature: " + thisJoinPoint.getStaticPart().getSignature());
            System.out.println(
    "Source Location: " + thisJoinPoint.getStaticPart().getSourceLocation());
            System.out.println(
    "-----------------------------------------");            
        }


    }


    三.把類繼承進方面中
        使用extends關鍵字來聲明方面擴展類。示例為一個偽日志記錄類,它代表一種現有的日志記錄機制。其目標是:重構對應用程序中日志記錄類的所有現有的調用,并把日志記錄模塊化進一個方面中,它可以更靈活地織入進應用程序中。

    package com.aspectj;

    public class OOLogging {
        
    public void logEntry(String entry) {
            System.out.println(
    "Entry logged: " + entry);
        }

    }

     

    package com.aspectj;

    public aspect AOLogging extends OOLogging{
        
    /**
         * Specifies calling advice whenever a method
         * matching the following rules gets called:
         * 
         * Class Name: MyClass
         * Method Name:foo
         * Method Return:void
         * Method Parameters:an int followed by a string
         
    */

        pointcut callPointcut() : call(
    void MyClass.foo(int,String));
        
        
    //Advice declaration
        before():callPointcut()&&!within(AOLogging+)&&!within(AOLogging) {
            
    this.logEntry(thisJoinPoint.toShortString());
        }

    }


     

    posted on 2008-08-26 15:34 Brian 閱讀(282) 評論(0)  編輯  收藏 所屬分類: 《AspectJ Cookbook》讀書筆記

    公告


    導航

    <2008年8月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    統計

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    收藏夾

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲av永久无码制服河南实里| 一区二区3区免费视频| 亚洲人成伊人成综合网久久久| 精品免费国产一区二区三区| 免费人成在线观看网站品爱网| CAOPORM国产精品视频免费| 亚洲色丰满少妇高潮18p| 亚洲一区精品中文字幕| 亚洲精品自在在线观看| 亚洲AV成人精品日韩一区18p| 最近免费中文字幕大全| 国产91免费视频| 99视频免费观看| 叮咚影视在线观看免费完整版| jzzjzz免费观看大片免费| 国产偷国产偷亚洲高清在线| 男人天堂2018亚洲男人天堂| 亚洲六月丁香六月婷婷色伊人| 亚洲成人激情在线| 亚洲成AV人片在线观看ww| 亚洲五月综合缴情在线观看| 亚洲综合国产精品第一页| mm1313亚洲精品无码又大又粗| 日本不卡高清中文字幕免费| 最新中文字幕免费视频| 最近的免费中文字幕视频| 成全视频免费高清| 成人毛片免费观看| 好大好深好猛好爽视频免费| 欧美三级在线电影免费| 免费看国产精品3a黄的视频| 无码日韩精品一区二区免费| 毛色毛片免费观看| 在线看片人成视频免费无遮挡| 成人免费无遮挡无码黄漫视频| 手机在线免费视频| 国产伦精品一区二区三区免费迷| 好爽好紧好大的免费视频国产 | 在线亚洲精品自拍| 亚洲精品无码高潮喷水在线| 亚洲国产成人片在线观看|