admin 管理员组

文章数量: 1087829


2024年3月28日发(作者:printing document是什么意思啊)

龙源期刊网

Spring应用

作者:王安庆

来源:《电脑知识与技术》2011年第26期

摘要: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.


本文标签: 对象 业务 提供 依赖