• 2004-08-23

    AspectJ's declare的四种用法

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://befresh.blogbus.com/logs/345266.html

    在前几天,我简单地介绍了AspectJ的一些高级特性,其中就有两种高级特性(Aspect precedence和Exception softening)将会用到declare关键字。declare关键字是AspectJ为了便于开发而提供的一种内部声明方式,declare在AspectJ中还是比较常用,下面我们就来看看declare的四种主要用法:

    1、declare warning、declare error

    当编译器在编译期间发现匹配pointcut的join point,declare warning和declare error就会使编译器报告警告或错误信息。这个功能还是相当有用的,譬如在使用Facade模式时,我们当然不愿意让client程序调用facade层次之下的某些方法。这时,就可以使用这个特性,当编译器发现有client程序调用非facade方法就会报告警告或错误信息。declare warning和declare error的语法如下:

    declare warning : <pointcut> : <message>;

    declare error : <pointcut> : <message>;

    2、declare parents

    declare parents主要是让我们能改变类的层次,也就是说可以让类继承新接口或新类。譬如你想为data package下的所有类添加Cacheable接口,你就可以使用declare parents : data.* implements Cacheable;这样的语句,现在data package下的所有类都实现了Cacheable接口。然后就可以通过introduce methods来为这些类添加Cacheable的接口方法。declare parents的语法如下:

    declare parents : [ChildTypePattern] implements [InterfaceList];

    declare parents : [ChildTypePattern] extends [Class or InterfaceList];

    3、declare precedence

    我在简单介绍AspectJ的高级特性(一)中介绍了aspect precedence,详细情况可以参考这篇文章。

    4、declare soft

    我在简单介绍AspectJ的高级特性(三)中介绍了Exception softening,可作为参考。

    在AspectJ中,主要包括上述四种declare用法,灵活的运用declare,将为我们开发程序带来更多的方便。


    收藏到:Del.icio.us




    引用

    下面Blog引用了该文:

    评论