Spring应用

时间:2022-10-17 11:01:49

Spring应用

摘要:Spring为企业应用开发提供了一个轻量级的解决方案,它是一个优秀的Web架构。该文简要介绍了Spring的概况和优势,重点介绍了Spring的应用,其中包括Spring的依赖注入核心机制、面向切面编程、事物管理以及Spring在Web中的MVC应用。

关键词:Spring;依赖注入;AOP;MVC

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)26-6453-02

1 Spring的概述

Spring是为解决企业应用程序开发复杂性而创建的,减小了程序开发的复杂度。Spring不仅为开发者提供了一个优秀的框架,也为开发者提供了良好的设计和大量可供参考的源代码。它不仅可以应用于服务器端的开发,也可应用于客户端的开发。Spring也可以作为一个中间件,它可以独立于各种服务器,甚至不需要应用服务器的支持,也能提供服务器的功能,如声明式事物。Spring简单化了JDBC的使用,它可以用来管理所有的业务对象,它的设计从底部帮助你编写易于测试的代码,这就大大提高了程序员开发软件的效率。Spring是对J2EE思想进一步改造和扩充,使其发展成更开放、清晰、全面、高效的开发框架。

2 Spring的优势

Spring所耗费的系统资源开销是比较少的,它的很多优势是值得肯定。Spring的优势在于以下几个方面:低侵入式设计,代码的污染率低。它可以独立于各种应用服务器。Spring的依赖注入机制降低了业务对象替换的复杂性。 Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。Spring可以和其他框架良好的结合,如hibernate、struts等,使得应用程序开发更容易。

3 Spring的应用

3.1 Spring中的基本设计思想

Spring实现了两种基本设计模式,即工厂模式和单态模式。

Spring容器是实例化和管理所有bean的工厂。Spring使调用者只关心被调用者必须满足的某种规则(接口),而不必关心实例的具体实现过程,具体的实现过程由bean工厂完成。调用者只关心工厂实例实现某个接口,是否可供自己正常调用。该模式提供各对象之间清晰的角色划分,降低程序的耦合。

Spring默认所有bean设置成单态模式,即对所有id的bean的请求,都将返回同一个共享实例。单态模式大大降低Java对象创建和销毁时的系统开销。单态模式设计可以保证只有一个实例,并提供实例的全局访问点。比如,数据库引擎访问点只能有一个。使用单态模式可避免Java类的频繁实例化,让相同类的全部实例共享同一内存区。

3.2 Spring的核心机制

Spring框架提供了很多功能,这些功能能够很好的组合在一起,就是因为它使用了控制反转技术。控制反转就是由容器来控制程序中各个类之间的关系,控制权由代码转到外部容器,而不是传统中的直接有程序代码操控。原先的程序设计中,我们通常是通过创建一个类对象来调用这个类中的方法,这样在程序中就有大量创建类对象的代码。这些代码要不仅需要程序员手工编写,也不容易管理。Spring的控制反转技术就很好的解决了这个问题。所有的对象全部交给Spring容器管理,当程序需要对应的类对象时,我们就直接去Spring容器中获取。

当采用控制反转技术时,对象就会将对某些特性及方面的控制转到框架或环境。对象创建和对象定位的职责从类转移到框架,这种依赖关系就是依赖注入。依赖注入是控制反转一个具体实例。依赖注入是Spring的核心机制。依赖注入让bean和bean之间以配置文件组织在一起,而不是以硬编码的方式耦合在一起。依赖注入的目标是为了提升组件重用的概率,为系统搭建一个灵活、可扩展的平台。

3.3 Spring对AOP的支持

AOP(Aspect Oriented Programming),即面向切面的程序设计,也称为面向方面的程序设计。Spring中提供内置AOP支持。AOP为开发者提供了一种基于关注点进行软件设计的新思想,是对OOP(Object Oriented Programming)面向对象编程模型的一种扩展。利用AOP编程,开发人员可以将复杂的系统看作多个关注点组合在一起实现的。比如:一个系统通常包括业务逻辑、日志、安全等方面的关注点,开发人员可以分别实现系统所需要的业务逻辑,最后将这些实现组合在一起,构建完整的系统。

简单的说,AOP将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,方便将来的可维护性和可操作性。比如,日志散布在所有对象的层次中,而它却与散布对象的核心功能无关。

3.4Spring的事务管理

Spring封装了所有对事务处理的功能,包括事务的回滚、提交等。这大大减少了程序员的代码量,也有利于事务的管理。

读数据不需要为其指定事务,而数据的插入修改删除就需要事务管理了。对于依赖容器的参数化事务管理,Spring起到很大的作用。Spring的事务管理是基于动态AOP,AOP技术实现的事务管理实质就是:在方法执行前后进行拦截,然后在目标方法开始之前创建并加入事务管理,执行完目标方法后根据执行情况进行提交或回滚事务。Spring可以将Java Class纳入事务管理。通过Spring,我们实现简单的事务配置,就可以为某个类的某个方法制定事务管理机制。Spring事务管理并不依赖特定的事务资源。Spring的事务管理支持JDBC等多种事务资源,这为我们提供了多种选择。

3.5 SpringWeb中的MVC应用

MVC是Model-View-Controller(模型-视图-控制器)的简称。它把一个应用的输入、处理、输出流程按照Model、View、Controller的方式分成三层(模型层、视图层、控制器层)。视图用来显示和用户交互的页面,模型用来表示企业数据和业务逻辑,控制器是负责页面的跳转,并且从客户端接受请求执行相应的业务逻辑,然后把响应结果输出到页面上。MVC的好处就是将业务层和视图层分离,三层各司其职,一旦那一层发生变化,只需要修改相应层中的代码。

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring 的 Web MVC 框架是围绕分发器 DispatcherServlet 设计的。Spring MVC会把所有的请求都提交给DispatcherServlet,当DispatcherServlet接收到请求时,它会查找适当的处理程序来处理请求。处理程序映射HandlerMapping负责为请求返回一个适当的处理程序。DispatcherServlet查询一个或多个处理程序映射HandlerMapping,HandlerMapping将web请求映射到正确的处理程序(handler),也就是找到处理请求的控制器Controller(Spring MVC中用来处理web请求最典型的处理程序就是控制器Controller)。 DispatcherServlet将请求提交到目标控制器Controller。Controller进行业务处理后,会返回一个ModelAndView(模型和视图的基本类)。DispatcherServlet查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象。视图对象负责将模型属性返回给客户端,视图对象的任务就是将模型属性展示给用户。

MVC实现的可扩展性很强,Spring框架可以很容易的和Struts、Hibernate结合起来。Spring充当了管理容器的角色。Hibernate用来做持久层,方便了与数据库的交互。Struts用来做应用层,负责调用业务逻辑层。Spring框架就可以管理Struts中的Action对象和业务逻辑类,实现了层与层之间的分离,程序的执行效率就更高,维护更方便。

4 小结

Spring是一个开源的项目,它广泛应用于大中型项目。Spring提供了一个灵活和可扩展的MVC实现,它在依赖注入、事务管理等方面都很优秀。Spring在项目中的应用,使应用程序更简单,更容易测试,更容易管理,有利于为开发者提供简单、有效的解决方案。

参考文献:

[1] 李刚. Spring2.0宝典[M].北京:电子工业出版社,2007.

[2] Ladd S,Davison D,Devijver S,et al. 深入解析Spring MVC与Web Flow[M].北京:人民邮电出版社,2008.

[3]Tate B A,Gehtland J. Spring程序高手秘笈[M].南京:东南大学出版社,2007.

上一篇:计算机自适应英语测试系统的研究及设计 下一篇:大型数据库设计方法的研究