论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> JAVA认证 >> IT正文
Spring事务处理及其AOP框架的内幕
 作者:佚名     2007-3-14 17:32:38        来源:不详  浏览次数:

 

 

 

 

 

 

 

 

Spring框架中成功吸引人的一点就是容器事务的管理,提供了一个轻量级的容器事务处理,针对的对象是普通的java类,使用Spring事务管理的话,你可以按照自己的业务把一些相关的方法纳入其事务管理里面,这就避免了程序员在处理事务的过程中繁琐的工作.同时这些也是ejb2.X规范里面吸引人的一点,这在spring里面都很好的提供.虽然在跨容器的事务管理,spring里面并没有提供,但是对于一般的web程序来说,也不需要仅仅为了那些功能而不得不使用ejb.不过,最近jboss的嵌入式的ejb容器也可以做的更小了,也是开源中的选择之一.无论技术是怎样发展的,当前,我们先来研究其中AOP实现的方法.

事实上,Spring中的事务处理是通过AOP思想来实现的,Spring AOP与Aspect J和JBoss具有很大的不同,首先,使用Spring AOP框架的用户要记住的一点是,Spring AOP针对的是方法层次上的实现,而其他两者对字段也提供了支持.说到Spring AOP的内幕,其实也不难,对于有接口的类,使用的是Java内部类提供的Proxy;而对于那些不实现接口的类,使用的是cglib库,动态创建一个子类来实现.

在Spring AOP中提供了4种处理切入类型:around,before,after,introduction.顾名思义,

1)around是针对具体的某个切入点的方法(比如,现在有个OrderBook方法,around的切入类型是就这个方法的内部调用,是通过java的元数据,在运行时通过Method.invoke来调用,具有返回值,当发生意外的时候会终止.记住的一点是,返回值.);

2)before是在方法调用前调用(在OrderBook方法前调用,但是没有返回值,同时在通常意外情况下,会继续运行下一步方法.记住的一点是没有返回值);

3)after和before刚好相反,没有什么特别的地方.

4)introduction是一个更加特殊的,但功能更加强大的切入类型.比如(你现在有Book对象,Computer对象,还有几十个这种业务对象,现在你希望在每个这样的对象中都加入一个记录最后修改的时间.但是你又不希望对每个类都进行修改,因为太麻烦了,同时更重要的一点,破坏了对象的完整性,说不定你以后又不需要这个时间数据了呢...这时怎么办呢?Spring AOP就为你专门实现这种思想提供了一个切入处理,那就是introduction.introduction可以为你动态加入某些方法,这样可以在运行时,强制转换这些对象,进行插入时间数据的动作,更深的内幕就是C++虚函数中的vtable思想).不过这种动态是以性能作为代价的,使用之前要慎重考虑,这里我们谈的是技术,所以就认为他是必需的.

好,现在我们就拿第四种来进行举例说明Spring AOP的强大之处:

1)假设创建了一个BookService接口及其实现方法(你自己的业务对象):

//$ID:BookService.java Created:2005-11-6 by Kerluse Benn

package com.osiris.springaop;

public interface BookService {

public String OrderComputerMagazine(String userName,String bookName);

public String OrderBook(String userName,String bookName);

}

//$ID:BookServiceImpl.java Created:2005-11-6 by Kerluse Benn

package com.osiris.springaop;

public class BookServiceImpl implements BookService{

public String OrderBook(String name,String bookName) {

// TODO Add your codes here

String result=null;

result="订购"+bookName+"成功";

return result;

}

public String OrderComputerMagazine(String userName, String bookName) {

// TODO Add your codes here

String result=null;

result="订购"+bookName+"成功";

return result;

}

}


1 2 3 下一页>>

责任编辑:lss
  相关新闻
Spring MVC framework总体分析
Spring MVC framework总体分析
2005年9月全国计算机等级考试二级Visual FoxPro笔试试
Spring VS. HiveMind
Spring开发基础之Spring事务管理
Jsp中的Application使用
Visual FoxPro 中的错误处理
快速上手Spring--4.安装和使用IDE
快速上手Spring--5.Bean的标志符
思科认证心得:OSPF经验总结
2005年9月全国计算机等级考试二级Visual FoxPro笔试试
CISCO最新CCSP认证介绍
思科认证心得:OSPF经验总结
微软新推Dynamics社区 打造Myspace商务版
快速上手Spring--5.Bean的标志符
快速上手Spring--4.安装和使用IDE
快速上手Spring--6.Singleton的使用
快速上手Spring--10.任意方法的替换
快速上手Spring--9.Lookup方法注入
快速上手Spring--8.集合对象注入
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号