Aspectj晋级(一)

      自从接触到AOP设计以来,它的力量一直令我折服;再进一步学习AspectJ,它的魅力总能使我的瞳孔放大数倍。我常给好友开玩笑的这样比喻:

      她像一个美少女般的温柔,让我们多了一种对付软件的复杂和需求的巨变的美人计。所以记录一下我和这位“美女”相处的点滴。

      现在从简单开始,就像是你与美女相处~~~~~   刚见面还是慢慢深入

      一个简单的程序:

 public class Ajtest {
 
 String show = "";
 
 public Ajtest(){
  
 }
 
 public void setMessage1(){
  show = "message1";

  show();
 }
 
 public void setMessage2(){
  show = "message2";

  show();
 }
 
 protected void show(){
  System.out.println(show);
 }
 
 public static void main(String[] args){
  Ajtest test = new Ajtest();
  test.setMessage1();
  test.setMessage2();
 }
}

 

      明显我要对加红色的字体加以处理,原因或者是随着类中的set方法的添加,我还要在新方法中加show()调用,又或者是随着需求变动:现在不但是要输出变量还要把变量持久化。抛开废话还是先看看怎么来搞吧??

~~卡卡~~

 

public aspect Ajtest_aj{

 

 // 定义一个切入点为调用Ajtest类的任意参数任意返回值的show方法。

 pointcut show() : call(* Ajtest.show(..));

 

// 定义一个警告信息,意思已经在下面了。

 declare warning : show() && !within(Ajtest_aj) : "不能在从AJ以为的所有地方调用Ajtest类的show方法。";

 

// 定义一个切入点,该切入点是执行Ajtest实体的set方法,并返回test实体

pointcut replateClassShow(Ajtest test) : execution(* set*(..)) && this(test);

 

// 在切入点后执行,实体test的show()方法。

after(Ajtest test) returning : replaceClassShow(test) {

   test.show();

}

}

 

复习词汇:this(Type)当前执行的对象是类型的实例时匹配连接点。

               target(Type)目标对象是类型的实例时匹配连接点。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值