aop- advice语法结构

来源:互联网 发布:国外类似淘宝网站 编辑:程序博客网 时间:2024/06/07 09:36

原网站: http://www.eclipse.org/aspectj/doc/released/progguide/starting-aspectj.html

在用切点描述了符合特定特征的程序块之后, 就可以用编译器定位到这些符合条件的代码段, 并对这些代码进行处理.

advice定义程序中切点部分的具体操作, 比如在切点前(后)插入代码, 或者替换切点代码,等等. advice由切点和操作组成. 

AspectJ中的Advice主要有: before,  after returning, after throwing, after,around .

before在到达切点之前运行advice中定义的操作.

after returning 在切点代码运行并取得返回值, 在程序控制流跳转至调用者之前执行操作.

after throwing 在切点代码运行并抛出指定异常, 在程序控制流跳转至调用者之前执行操作.

after 在切点运行之后, 且after returning 或者after throwing的操作执行之后(如果有的话), 在程序控制流跳转至调用者之前执行操作.

around 操作代替切点运行.


切点可以是预先定义的, 也可以是未定义的匿名切点. 例如:

pointcut setter(Point p1, int newval): target(p1) && args(newval)                                         (call(void setX(int) ||                                          call(void setY(int)));  before(Point p1, int newval): setter(p1, newval) {      System.out.println("About to set something in " + p1 +                         " to the new value " + newval);  }

含有匿名切点的定义如下, 两者等价:

before(Point p1, int newval): target(p1) && args(newval)                                (call(void setX(int)) ||                                 call(void setY(int))) {      System.out.println("About to set something in " + p1 +                         " to the new value " + newval);  }






原创粉丝点击