快速业务通道

Spring 1.2和2.0的简单AOP例子 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

Spring 1.2和2.0的简单AOP例子

时间:2011-09-14

10.3 开发Spring 1.2 AOP应用

本节将会给大家展示一个恐怖的例子,FBI特务人员已经介入了您的生活,您所做的一切都在他们的监视之中,包括聊QQ,泡MM,这在现实生活中是真实存在的,为了民众的安全和稳定,对嫌疑犯进行必要的监控是必要的。

注意:本章虽然介绍了多种AOP实现方式,然而,在实际项目中只要使用一种就可以达到目的了(因为Spring的AOP存在多种写法,完全掌握还是挺复杂),其它方式仅供参考,千万不要像孔乙己一样,研究“茴”字的N种写法,这样就脱离了学习技术的初衷了:学习是为了解决问题,不是为了炫耀自己。另外,如果在项目中滥用AOP的后果就是系统的执行效率大大降低,甚至配置不当会导致死循环。记住一个真理:系统越复杂,效率越低,出故障的可能越大。另外一条建议:千万不要用AOP在服务器上记录日志,或者在服务器上打印不必要的调试信息,那样对系统只能有害无益,日志输出是单线程操作,切记。做项目,一般来说是功能越少越好。高手更多的时候只能做出破坏力大,不易维护的垃圾系统。

10.3.1 开发Man对象

这个项目非常简单,仿照上节内容,创建项目并添加Spring开发功能,不同的是添加library的时候要把Spring 2.0 AOP Libraries加入进来。因为Spring 2.0的类库是兼容1.2的,所以这里就用2.0了。项目名为Spring1_2AOP。接下来我们要创建一个自由人的对象,他有聊QQ和泡MM这两个方法,还有一个姓名属性。好了,先建立这个类:

  /**
  * 具有聊QQ和泡MM两个行为的人对象,还有一个用户名属性。* @author BeanSoft*/public class Man {  private String name;  
  public String getName() {   
  return name;  
  }  
  public void setName(String name) {   
  this.name = name;  
  }    
  public void qq() {   
  System.out.println("我在聊QQ");  
  }    
  public void mm() {   
  System.out.println("我在泡MM");  
  }
  }

清单10.6 Man类源码

Spring 1.2和2.0的简单AOP例子(2)

时间:2011-09-14

10.3.2 开发前置通知(Before advice)对象:FBI

首先贴一段Spring文档中关于Before advice的介绍:

前置通知(Before advice): 在某连接点(join point)之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)。

说通俗点就是写一个如何处理监视结果的对象,可以把监视结果打印出来以作为必要的时候的呈堂证物,或者派探员立即跟踪,但是这个过程只能在你进行某活动前进行,否则就失去监视的意义了,这个对象更像“诸葛亮”。详细的了解这个类需要学习JDK里面关于反射部分的内容,下面是这个类的代码:

  import java.lang.reflect.Method;
  import org.springframework.aop.MethodBeforeAdvice;
  /*** 联邦调查局的探员将您的所有行动都记录在案。
  * @author BeanSoft*/public class FBI implements MethodBeforeAdvice {  
  public void before(Method method, Object[] args, Object target)      throws Throwable {   
  Man man = (Man)target;   
  System.err.println("FBI 发现" + man.getName() + "正在进行 " + method.getName() + " 活动。");  
  }
  }

清单10.7 FBI类源码

10.3.3 装配拦截器和Bean

最后要做的,就是创建一个平民对象,注意不是自由人哦,因为平民是随时处于FBI的监视之下的。这个对象本质上是类ProxyFactoryBean的一个示例,这个类位于包org.springframework.ao

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号