aop- advice语法结构

原网站: 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);
  }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值