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

    xiaoxiao2021-04-16  199

    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至少为我们提供了这种可能性和选择,从而降低了平台锁定的风险。 相关资源:垃圾分类数据集及代码

    最新回复(0)