它是最适合的 我热爱Spring的五个理由
2008-01-05 08:17:21 来源:WEB开发网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所需的属性和服务。下面让我们看一看。
目标:
<bean id="rentaBikeTarget" class="com.springbook.HibRentABike"> <property name="storeName"> <value>BrUCe's Bikes</value> </property> <property name="sessionFactory"> <ref local="sessionFactory"/> </property> <property name="transactionManager"> <ref local="transactionManager"/> </property> </bean> 拦截器:
<bean name="transactionInterceptor" class="org.springframework.transaction.interceptor.
TransactionInterceptor"> <property name="transactionManager"> <ref local="transactionManager"/> </property> <property name="transactionAttributeSource"> <value> com.springbook.RentABike.transferReservation= PROPAGATION_REQUIRED,-ReservationTransferException com.springbook.RentABike.save*=PROPAGATION_REQUIRED com.springbook.RentABike.*=PROPAGATION_REQUIRED,readOnly </value> </property> </bean>
- ››适合做商品团购营销的网站
- ››适合所有浏览器hack的CSS技巧
- ››适合C# Actor的消息执行方式(1):Erlang中的模式...
- ››适合C# Actor的消息执行方式(2):C# Actor的尴尬...
- ››适合C# Actor的消息执行方式(3):中看不中用的解...
- ››适合C# Actor的消息执行方式(4):阶段性总结
- ››适合C# Actor的消息执行方式(5):一个简单的网络...
- ››适合C# Actor的消息执行方式(6):协变与逆变
- ››适合1-5个月经验的seo优化全过程分享
- ››Spring MVC与JAX-RS比较与分析
- ››Spring 框架的设计理念与设计模式分析
- ››Spring Web Flow 2 中流管理的持久化
更多精彩
赞助商链接