《Spring技术内幕》——1.4节Spring的应用场景-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《Spring技术内幕》——1.4节Spring的应用场景

简介: 本节书摘来自华章社区《Spring技术内幕》一书中的第1章,第1.4节Spring的应用场景,作者:计文柯,更多章节内容可以访问云栖社区“华章社区”公众号查看

1.4 Spring的应用场景
通过介绍Spring架构设计,我们了解到Spring是一个轻量级的框架。在Spring这个一站式的应用平台或框架中,其中的各个模块除了依赖IoC容器和AOP之外,相互之间并没有很强的耦合性。Spring的最终目标是简化应用开发的编程模型。它所提供的服务,可以贯穿应用到整个软件中,从最上层的Web UI到底层的数据操作,到其他企业信息数据的集成,再到各种J2EE服务的使用,等等。这些企业应用服务,Spring都通过其特有的IoC容器和AOP模块实现。在实现过程中,Spring没有把这种复杂性转换成自己被使用的复杂性,这点无疑是成功的,同时大大拓宽了Spring的应用场景。一方面,我们可以把Spring作为一个整体来使用,另一方面,也可以各取所需,把Spring的各个模块拿出来独立使用,这取决于我们对Spring提供服务的具体需求。例如,这些需求可能来自一个完整的Java EE企业应用开发需求,可以仅使用Spring的某些模块,如IoC容器。再如,我们可以使用Spring集成其他的J2EE服务,如JavaMail、JMS、JNDI等,还可以在Android应用环境,甚至在.NET应用环境中使用Spring。使用Spring的时候,可以采用各种不同的方式,而对于这些方式的选择,完全是由应用来决定的。因而,在对Spring的使用中,我们看到应用很少依赖于Spring特有的API,同时,由于Spring本身的设计也是非常模块化的,这样,就为应用开发提供了EJB开发不曾提供的便利。
在Java EE企业应用开发中,我们了解了使用Spring最为基本的场景,也就是使用大家熟知的SSH架构来完成企业应用开发,从而取代传统的EJB开发模式。在SSH架构中,Struts作为Web UI层、Spring作为中间件平台、Hibernate作为数据持久化工具(ORM工具)来操作关系数据库。如果我们使用的是Apache Tomcat、MySQL数据库和Linux环境,这就是一个完整的使用开源软件搭建企业应用的典型案例,对于应用开发来说,这样的架构组合是非常有吸引力的,因为这个架构的使用基本上没有什么License的费用,而且利用其进行开发的人员众多,已经成为Java应用开发中的主流技术。在这个架构中,Hibernate是一个独立的ORM数据持久化产品,目前是JBOSS/RedHat产品组合的一员,是一款著名的Java开源软件产品,使用者众多。比较Spring JDBC和Hibernae对数据库操作的支持,对Spring来说,其对数据持久化的支持,虽然也有JDBC的封装,可以完成一些将简单的数据记录到Java数据对象的转换和映射工作,但和Hibernate相比,功能上毕竟还是有一些单薄,比如Hibernate还提供了各种数据的查询、方便的对象和关系数据的映射等。因此,在大多数应用中,将Hibernate和Spring一起使用是非常普遍的,因为一方面Hibernate提供了完整的和已经成为事实标准的ORM功能,另一方面,Spring也提供了与Hibernated的集成和封装,包括声明式事务处理的封装等。对于Web UI层而言,尽管Spring提供了自己的MVC实现,但与Struts的流行程度相比,这个Spring MVC的使用并不广泛,毕竟在Web开发领域,Struts成名更早。在这个架构组合中,Spring起到的是一个应用平台的作用,通过Spring的集成,可以让应用在直接部署在Tomcat这个Web服务器上 ,因为作为一个直接依赖JVM的轻量级框架,Spring的部署方式就是一个简单的jar包,不需要以一个J2EE应用服务器的形式出现,从而使整个应用在Tomcat这样的Web服务器上可以直接运行起来,非常简洁。同样地,如果我们在测试环境中使用Spring,还可以选择使用Jetty来提供Web服务,使用HSQLDB这样的由纯Java实现的数据库。这样的环境,不但可以为调试应用带来许多便利,还可以进一步体现Spring轻量级开发的特点。
同样,因为Spring的实现中,它的核心实现,比如IoC容器实现,是直接依赖JVM虚拟机的,也就是说,在Java环境中,Spring IoC容器是可以单独使用的,特别是在BeanFactory的基本实现中,包含在一个小小的jar包里面,可以直接在应用中引用。对于Spring而言,如果要在.NET环境下使用其提供的基本特性,Spring项目也提供了Spring .NET的实现;如果需要在Android移动平台中使用Spring的基本特性,Spring也有对Spring Android项目的支持。从这些应用场景上可以看出,因为Spring设计时的轻量级特性,以及推崇POJO开发,所以使用起来非常灵活。在对Spring的应用中,Spring团队为我们列举了Spring的价值,非常值得参考。

  • Spring是一个非侵入性(non-invasive)框架,其目标是使应用程序代码对框架的依赖最小化,应用代码可以在没有Spring或者其他容器的情况下运行。
  • Spring提供了一个一致的编程模型,使应用直接使用POJO开发,从而可以与运行环境(如应用服务器)隔离开来。
  • Spring推动应用的设计风格向面向对象及面向接口编程转变,提高了代码的重用性和可测试性。
  • Spring改进了体系结构的选择,虽然作为应用平台,Spring可以帮助我们选择不同的技术实现,比如从Hiberante切换到其他ORM工具,从Struts切换到Spring MVC,尽管我们通常不会这样做,但是我们在技术方案上选择使用Spring作为应用平台,Spring至少为我们提供了这种可能性和选择,从而降低了平台锁定的风险。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接