• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件测测之框架:一个使用spring框架AOP的有趣例子

发布: 2009-11-04 10:49 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 196次 | 进入软件测试论坛讨论

领测软件测试网 软件测测之框架:一个使用spring框架AOP的有趣例子  软件测试工具

关键字:

 

接触spring有一段时间了,不过都是看的多,写的少,工作忙,公司也不准备用。自己写过一些小东西用到,也只用到了BeanFactory组装对象,JdbcTemplate代替jdbc,事务管理。。。东抓一把,西抓一把,没形成系统。最近也在看spring自带的reference,一时手痒,写了个AOP的创建advice的例子,比之单纯地使用TransationProxyFactoryBean对AOP的理解又深入了点,打算看看它的源代码,基于CGLIB的实现对类的代理不了解,倒是好奇它如何实现对接口的代理??也就是利用J2SE的动态代理技术。

例子如下:讲述一间书店开始打折促销,规则是每一名顾客只能买一本书,而且< spring in action>已经脱销了。。。。。你可以去掉TestAdvice里的注释看看各种运行结果,具体就不解释咯,在代码注释里。

首先,你必须对增强(advice)有所了解,增强就是在特定连接点执行的动作。advice contains the logic of your aspect。增强,分为4类:

前增强(before) 在连接点之前调用
后增强(after) 在连接点执行之后调用、
环绕增强(around) 完整控制整个方法流程,必须调用MethodInvocation的proceed促使真实操作发生
异常增强 针对某个异常抛出时调用
书店,一个buyBook业务:

package com.denny_blue.springdemo.aop;

public interface BuyBook {
       public void buyBook(String customer,String book)throws NoThisBookException;
}


实现此接口的一个业务对象,如果顾客要买< spring in action>就抛出NoThisBookException异常。

package com.denny_blue.springdemo.aop;

public class MyBuyBook implements BuyBook {
 public void buyBook(String customer,String book)throws NoThisBookException{
  if(book.equals("< spring in action>"))
   throw new NoThisBookException("对不起,没有"+book+"存货了!");
  System.out.println(customer+",你好,你已经购买了一本"+book+"!");
 }
}

 

自定义两个异常类,其中NoThisBookException被抛出时将触发MyThrowsAdvice调用:

//NoThisBookException.java

package com.denny_blue.springdemo.aop;


public class NoThisBookException extends RuntimeException {
 public NoThisBookException(String msg){
  super(msg);
 }

}

//BuyBookException.java

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: aop AOP spring Spring 框架 例子 软件

41/41234>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网