快速业务通道

Spring事务处理及其AOP框架的内幕 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
P框架的内幕(2) 时间:2011-01-17

2) 事实上你还有很多这样的对象,现在我们希望在每个对象中添加我们的功能最后修改的时间,功能如下:

//?$ID:IAuditable.java Created:2005-11-7 by Kerluse Benn package com.osiris.springaop.advices.intruduction; import java.util.Date; public interface IAuditable {   void setLastModifiedDate(Date date);   Date getLastModifiedDate(); }

3) 因为我们使用的切入类型是introduction,Spring AOP为我们提供了一个描述这种类型的接口IntroductionInterceptor,所以我们的切入实现处理,也需要实现这个接口:

//?$ID:AuditableMixin.java Created:2005-11-7 by Kerluse Benn package com.osiris.springaop.advices.intruduction; import java.util.Date; import org.aopalliance.intercept.MethodInvocation; import org.springframework.aop.IntroductionInterceptor; public class AuditableMixin implements IAuditable,IntroductionInterceptor{   private Date lastModifiedDate;   public Object invoke(MethodInvocation m) throws Throwable {    // TODO Add your codes here    if(implementsInterface(m.getMethod().getDeclaringClass())){     return m.getMethod().invoke(this,m.getArguments());     //invoke introduced mthod,here is IAuditable    }else{     return m.proceed(); //delegate other method    }   }   public Date getLastModifiedDate() {    // TODO Add your codes here    return lastModifiedDate;   }   public void setLastModifiedDate(Date date) {    // TODO Add your codes here    lastModifiedDate=date;   }   public boolean implementsInterface(Class cls) {    // TODO Add your codes here    return cls.isAssignableFrom(IAuditable.class);   } }

输出结果:

订购Professional C#成功 订购时间为Mon Nov 07 11:35:20 CST 2005

订购Expert j2ee one-on-one成功 订购时间为Mon Nov 07 11:35:30 CST 2005

看见上面黑体字:

IAuditable auditable=(IAuditable)bookService;

由于bookService对象事实上已经实现了IAuditable接口,通过Spring AOP的introduction切入实现,所以在运行时(熟悉C++的vtable模型的可以在大脑里想一下)可以转换,我们就可以随意添加自己的接口方法了。

好了,关于Spring AOP就介绍到这了,其他相关的内容可以参考相应的书籍,这篇文章的目的主要是为了介绍一下AOP思想应用的强大之处.具体的相关应用还包括用户操作验证等等。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号