我热爱Spring的五个理由(1)

我热爱Spring的五个理由(1)

[@more@] 大约2年前,作者试用了在Hibernate站点上突出提到的Spring项目,觉得它是再适合不过的。因为它提供更好的优势、支持POJO编程、依赖注入有助于可测试性、反向控制简化了JDBC和在社区中的繁荣。

15年前6月的一个闷热的早晨,我爬到一艘老式的玻璃纤维皮划艇中。它是如此古老,以至于有些小碎片差点插到了我的手指中,而且划桨长度大约是传统激流划桨的两倍。我游泳的时候要多过划船,但是这没有关系。15年之后,我仍然对它着迷。

大约2年前,我试用了在Hibernate站点上突出提到的Spring项目。我觉得它就像是上面提到的老式皮划艇:它再适合我不过了。为了进行企业硬编码,Spring如此深植于我的编程工作中,以至于我使用它作为我第4本Java著作《Spring: A Developer's Notebook》的主题。在本文中,我将说明其中的原因。

1.Spring 提供更好的优势

在河流中,我学会了更多地使用我的腰和背来划桨,因为我的手臂肌肉无法坚持整日在河上划桨。我变得更加高效;我获得了更好的利用率。借助于Spring,我可以使每行代码做更多的事情。借助于Spring,您可以发现很多额外的手段,其中最大的一处是在持久性方面。下面给出一个Hibernate数据访问对象中的方法:

public List getReservations( ) {

return getHibernateTemplate( ).find("from Reservation");

}

}

注意您没有看到的内容。这里没有事务处理。Spring允许构建配置代码来处理事务。不必通过关闭会话来管理资源。不必进行自己的配置。不必在这个层次上管理异常,因为异常是未经检查的。可以自由地在最合适的位置管理它们。下面给出了另一个Hibernate方法,没有使用Spring:

public List getBikesOldWay( ) throws Exception {

List bikes = null;

Session s = null;

try {

s = mySessionFactory.openSession( );

bikes = s.find("from Bike");

}catch (Exception ex) {

//handle exception gracefully

}finally {

s.close( );

}

return bikes; 

Spring为您提供了更好的优势。借助于Spring,可以更快地编写代码,而进行更少的维护。

2.Spring支持POJO编程

EJB 2.x失败之后,我们都在寻求表达企业服务而不使用笨拙的模型侵入每个bean的方法。当然,我们需要事务、安全性、持久性,有时还需要远程控制。对于EJB,我必须学习一个广泛使用的API,并通过新的工具和部署流程开展工作。我是容器所提供的服务的奴隶。而借助于Spring,我可以选择自己的服务和持久性框架。我进行POJO编程,并使用配置文件为它们添加企业服务。

在《Spring: A Developer's Notebook》一书中,我构建了一个RentaBike应用程序。我把我的POJO称作hibRentaBike,而不是会话bean或实体bean;它用作我的数据访问对象。我还在别处添加了服务。Spring配置文件称为context,它是一个XML文件,包含容器中所有的bean以及bean所需的属性和服务。下面让我们看一看。

目标:





Bruce's Bikes















拦截器:


class="org.springframework.transaction.interceptor.TransactionInterceptor">











com.springbook.RentABike.transferReservation=

PROPAGATION_REQUIRED,-ReservationTransferException

com.springbook.RentABike.save*=PROPAGATION_REQUIRED

com.springbook.RentABike.*=PROPAGATION_REQUIRED,readOnly





代理:





com.springbook.RentABike





transactionInterceptor,rentaBikeTarget



注意,有3种不同的bean:代理、目标和拦截器。代理将调用POJO以及POJO所需的任何服务。拦截器包含用于调用服务的结合代码(glue code),还指定了如何处理目标中的每个方法。任何需要访问RentaBike的人都要调用代理,而代理调用事务拦截器,然后事务拦截器就会开始一个事务并调用目标(POJO)。目标完成自己的工作,返回给(负责提交事务的)拦截器,然后再返回给代理和代理的调用者。

1202520.jpg498)this.style.width=498;" />

图1:正在进行的POJO编程

您在POJO之外构建程序并对其进行配置,而余下的工作就交给Spring。我是一名POJO程序员。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7839366/viewspace-919839/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7839366/viewspace-919839/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值