首页 > 学院 > 开发设计 > 正文

开源有益——爱上Spring的5个理由

2019-11-18 13:00:10
字体:
来源:转载
供稿:网友

  约摸15年前的6月的一个酷热的早上,我爬入一艘旧玻璃钢制小艇。这小艇十分老,船身碎片刺入我的手指,它的桨几乎是传统whitewate桨的两倍长。我似乎在游泳而不是在划船,但是无所谓。15年后,我依然为此着迷。
  
  约两年前,我试了试SPRing Project,这个被Hibernate站点显著提到的东西。感觉就像那旧艇,十分适合我。为企业应用核心部分的发展,Spring深深地融入了我的编程当中,所以我将其作为我的第4本java书 Spring:A Developer’s Notebook的主题。在这篇文章中我会告诉你原因。
  
  1.Spring提供更好的平衡
  
  在河中,我学会更多地利用我的腰部和背部的肌肉来划船,因为我的手臂肌肉无法坚持整天划船。我变得更有效率,更平衡地利用自己的肌肉。通过spring,我可以在每行代码中做更多的事。通过spring你会发现更多其优势,其中最重要的是在对象持久化上。这是一个来自hibernate访问数据对象的函数。
  
  public List getReservations( ) { return getHibernateTemplate( ).find("from Reservation");}
  
  注重那些你没看到的东西。这里没有任何事务处理。Spring答应你建立配置代码去处理它。你不一定要通过关闭session来治理资源。你不一定写你自己的配置。你不一定在这个层次上治理异常,因为这些异常是未经检查的。你可以自由地在最适当的位置去治理他们。没用spring的hibernate方法的代码会是这样的:
  
  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给我更多优势,让我编程更快,更易维护程序。
  
  2.Spring支持POJO编程
  
  在EJB 2.x彻底失败之后,我们都在寻找更多方式避免在每个bean中加入粗笨的模型去表达企业服务。当然。我们需要事务,安全,持久化,有时还需要远程调用。用EJB时,我不得不去学庞大的API以及通过新的工具和部署过程来工作。结果我变成容器(container)提供的服务的奴隶。而在用Spring时,我可以选择我自己的服务和持久化框架。我在POJOs上编程并通过配置文件添加企业服务。
  
  在Sping:A Developer’s notebook这本书中,我建立了一个RentaBike的程序。我用我的POJOhibRentaBike取代了session bean 或者entity bean,它充当了我的数据访问对象。我还在别处添加了服务。Spring配置文件是一个xml文件,被称为上下文。它含有在容器中的所有bean以及这些bean的属性,还有这些bean需要的服务。让我们来看看下面的例子。
  
  Target:
  
  
  BrUCe's Bikes
  

  
  
  

  
  
  

  
  Interceptor:
    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
  

  

  
  proxy:
     com.springbook.RentABike    transactionInterceptor,rentaBikeTarget 
  
  注重这3个不同的bean: The Proxy , The target, and The interceptors. The proxy将调用POJO,以及POJO需要的任何服务。Interceptors包含粘合各调用服务的代码,他们也说明了如何去对待The target中的每个方法。所有需要访问RantaBike的人调用The proxy,这个开始事务访问The target(The POJO)的事务拦截器。Thet target做自己的事返回给事务拦截器(提交事务的对象),返回到proxy和proxy的调用者。
  

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表