它是最适合的 我热爱Spring的五个理由

    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>

  代理:

<bean id="rentaBike" class="org.springframework.aop.framework.ProxyFactoryBean">  <property name="proxyInterfaces">    <value>com.springbook.RentABike</value>  </property>  <property name="interceptorNames">    <value>transactionInterceptor,rentaBikeTarget</value>  </property></bean>

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


图1. 正在进行的POJO编程

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

[1] [2] 下一页  

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索spring
, 事务
, 返回list、bean
, 拦截器
, 代理
, spring中的拦截
, spring管理exception
, 一个
pojo
热爱企业理由、热爱游戏适合什么工作、最适合不上夜班的理由、适合银行柜员和理由、辞职 理由 不适合,以便于您获取更多的相关知识。

时间: 2024-08-28 14:33:05

它是最适合的 我热爱Spring的五个理由的相关文章

spring boot(五):spring data jpa的使用

在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spring data jpa 开发时,发现国内对spring boot jpa全面介绍的文章比较少案例也比较零碎,因此写文章总结一下.本人也正在翻译Spring Data JPA 参考指南,有兴趣的同学欢迎联系我,一起加入翻译中! spring data jpa介绍 首先了解JPA是什么? JPA(Ja

站长不适合再做网址导航站的几个理由

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 自从百度收购了hao123.com,谷歌收购265.com,网址导航站如"雨后春笋"般涌现,其中绝大部分是小站长制作的,目前114啦网址导航站开源,做网址导航站更加容易,下载下114la网址导航源码,先解压再上传最后安装,不到5分钟安装就结束了,而且功能和114la网址导航站一样强大.既然建设网址导航站如此容易,我还为什么

Apache Geronimo和Spring框架,第6部分:Spring MVC:使用Web视图技术

简介:本教程是系列教程(共六部分)的最后一部分,向您展示了如何利用 Spring 框架来使用 JavaServer Page(JSP).Velocity.Tile 和 PDF 导出功能.您将用 Model-View-Controller (MVC)中的 V 做试验,即 Spring MVC 中内置的各种 Web 视图.通过对 Spring MVC 所支持的各种视 图技术的全面介绍,您将看到在整个系列教程中构建的样例电话本应用程序中实现这些技术有多么轻松. 开始之前 本系列教程适合于需要了解 Sp

Apache Geronimo和Spring框架,第5部分: Spring MVC

简介:Spring Model-View-Controller(MVC)是 Spring 框架中应用最广泛的模块.它基于一种干净 的设计,并提供了很多开箱即用的类.本教程是系列教程(共六部分)的第五部分,通过向电话本示例应 用程序中添加更多功能详细介绍了 Spring MVC.在此过程中,您将了解如何利用丰富的 Spring MVC API 集中的有用类,如何定义易于理解的控制器来处理 JavaServer Page(JSP)的操作,如何扩展和 使用由 Spring MVC 提供的数据验证类等等

Apache Geronimo和Spring 框架,第4部分

混合使用Spring AOP和Spring Web Flow 简介:本系列教程共分为 6 个部分,这是其中的第 4 部分,介绍了 Spring AOP 模块提供的面向方 面编程(Aspect-Oriented Programming,AOP)支持.通过本教程,您将会了解 Spring 框架如何简化使 用 AOP 的过程,会看到 Spring Web Flow (SWF) 模块,并了解如何以 XML 配置文件格式声明性地定义 应用程序的 Web 流程.您还将看到 Apache Geronimo W

Apache Geronimo和Spring框架,第3部分: 集成DAO与ORM

动态透明地读取数据 简介:本教程将扩展在本系列教程(共 6 个部分)的 第 2 部分 中创建的 Apache Geronimo 应用程 序.在 第 1 部分 中向您介绍了 Geronimo 应用服务器.Spring 框架和控制反转(Inversion of Control,IoC).然后又详细阐述了如何开发.配置和部署第一个基于 Spring 框架的应用程序.在本部 分中,您将了解如何让集成的技术 -- 如 Spring Java 数据库连接(Java Database Connectivity

spring bean加载--从缓存中获取bean

标签:spring源码学习 入口方法:getSingleton,在 Object sharedInstance = getSingleton(beanName); @Override public Object getSingleton(String beanName) { return getSingleton(beanName, true); } 真正的实现: protected Object getSingleton(String beanName, boolean allowEarlyR

使用 Spring Boot 快速构建 Spring 框架应用,PropertyPlaceholderConfigurer

Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2002 年发布以来,Spring 框架已经成为企业应用开发领域非常流行的基础框架.有大量的企业应用基于 Spring 框架来开发.Spring 框架包含几十个不同的子项目,涵盖应用开发的不同方面.如此多的子项目和组件,一方面方便了开发人员的使用,另外一个方面也带来了使用方面的问题.每个子项目都有一定的学习曲线.开发人员需要了解这些子项目和组件的具体细节,才能知道如何把这些子项目整合起来形成一个完整的解决方案.在如何使用这些组件上

Spring AOP从入门到放弃之概念以及Spring Boot AOP demo

本文小福利 点我获取阿里云优惠券 AOP核心概念 1.横切关注点 对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点 2.切面(aspect)->(通知+切点) 类是对物体特征的抽象,切面就是对横切关注点的抽象. 通知+切点 意思就是所有要被应用到增强(advice)代码的地方.(包括方法的方位信息) 3.连接点(joinpoint)->(被拦截的方法) 被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截的方法,实际上连接点还可以是字段或