spring框架范文

2019-09-17 版权声明

spring框架

spring框架篇1

摘要:Spring AOP模块直接将面向切面的编程功能集成到了Spring框架中,所以可以很容易的使Spring框架管理的任何对象支持AOP。该文以实际项目为例,阐述了利用AOP的技术优势和应用价值。

关键词:Spring;Web;AOP;IoC

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

The Research of AOP on Spring Framework

WANG Xiao-jun1, ZHANG Dian-long2

(1.Department of Computer Engineering, Shandong College of Information and Technical, Weifang 261061, China; 2.Department of Software Engineering, Shandong College of Information and Technical, Weifang 261061, China)

Abstract: Spring is a programming framework, that implements the techonology about Aspect-Oriented Programming. So anyone can make the Spring framework that manage any object to support AOP easily. This paper bases on the realized project,that it has expatiated on the technological advantage and application value by using AOP.

Key words: Spring; Web; AOP; IoC

当Java在Web开发领域获得前所未有的成功之后,Web程序员纷纷从PHP、ASP等技术阵营转移到Java阵营。然而随后几年Java程序员在开发EJB时,发现它过于复杂,且难以进行单元测试,恰巧这个时候,.NET技术开始发展起来。Java阵营迫切需要一个实用的框架来加速Web和企业级软件的开发,以Spring为代表的轻量级框架应运而生。

1 开源框架 Spring简介

1.1 Spring简介

Spring是一个非常优秀的轻量级开源框架,由RodJohnson创建,其组成部分从Web MVC一直到数据持久化访问,是一个完整程序结构体系。简单地说,Spring是一个轻量级的IoC和AOP容器框架,通过Spring的IoC容器,我们将关注点放在需要实现的业务逻辑上。对AOP的支持则能动态的增强业务方法。Spring既是全面的又是模块化的。Spring有分层的体系结构,这意味着开发者能选择使用它任何一个独立的部分,而它的架构又是内部一致。Spring不会给你的工程添加对其他的框架依赖。Spring可以称得上是个一站式解决方案,提供了一个典型应用所需要的大部分基础架构。它还涉及到了其他framework没有考虑到的内容。Spring不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块。

Spring之所以能迅速在Java开发人员中流行,是因为Spring具有以下特点。

1)设计良好的分层结构,使得开发人员可以很简单的进行扩充,并引入先进的设计理念。

2)以IoC为核心,促使开发人员面向接口编程,可以养成良好的编程习惯,从而便于程序的扩充和维护。

3)良好的架构设计,使得应用程序尽可能的依赖应用程序的环境,从而使应用脱离了环境的影响。

4)Spring能够代替EJB。如果开发人员原来使用EJB,那么使用Spring后还可以继续使用EJB。如果从头开始开发应用程序,则使用Spring提供的功能就可以代替EJB。

5)Spring MVC很好的实现了MVC2,并提供了很简单的对国际化开发与资源的支持,而且可以与Spring提供的IoC和AOP联系起来。

6)Spring可以与其他框架良好的结合,例如Struts、Hibernate等结合,这使应用开发更为容易。

1.2 Spring AOP原理

AOP全称Aspect-Oriented Programming 中文直译为面向切面(方面)编程,用于解决OOP中无法很好解决的问题。它从另一个角度来考虑程序结构以完善面向对象编程,OOP将应用程序分解成各个层次的对象,而AOP将程序分解成各个方面或者说关注点,这使得可以模块化诸如事务管理等这些横切多个对象的关注点。

大多数AOP定义都是关于如何使交叉业务模块化。如图2所示显示的是业务交叉的示意图。如果由于需求的变更,我们要取消一部分方法中的开启事务或结束事务处理的功能,此时,我们就需要手工逐一删除这些方法中的事务处理语句。使用AOP可以在一个地方定义通用功能,只要声明是定义何时何地应用这些功能,就可以在需要新功能的地方修改代码。

2 Spring中的AOP实现及应用

Spring框架中包含一个AOP实现,是Spring框架的重要组成部分,实现了AOP规范约定的接口。Spring中的AOP主要使用基于拦截器的方式,能够创建连接点,能够对方法调用连接点进行相关的拦截。Spring使用纯Java的方式来实现AOP,Spring AOP的植入过程是在运行是由Spring使用Java的机制来完成的。Spring AOP依赖于Spring的核心IoC容器,并与容器融为一体,因此可以在配置文件中声明应用AOP功能。

在Spring配置文件中分别配置通知、切入点、切面,然后使用工厂Bean等配置业务对象的,按部就班的进行Spring AOP的配置。

2.1 创建通知

Spring的连接点是建立在方法拦截基础上的,这意味着Spring通知可以在方法调用的各个地方植入系统中。因为Spring可以在方法执行的各个地方植入通知,所以通知有不同的类型。

2.2 定义切入点

切入点是根据类的方法是否满足特定的规则,来决定是否在合适的地方植入通知。切入点的描述重点是方法的描述。方法的描述涉及到几个方面,包括方法名称的描述、所带的参数、所处的类、执行的流程等。

Spring框架中的切入点主要分为静态切入点和动态切入点。其中静态切入点基于方法和目标类进行切入点判断而不考虑方法的参数。在大多数情况下,静态切入点是高效的、最好的选择。Spring只在第一次调用方法时执行静态切入点,以后每次调用这个方法时就不需要再执行,所以性能比动态切入点好。

2.3 定义

的工作机制很简单,就是当我们需要使用某一个类时,由Spring通过一定的机制,创建一个我们所需类的对象,对象跟实际对象实现相同的接口或者是实际对象类的一个子类。当执行对象上的一个方法时,其交由一个回调对象来处理,而我们可以自定义这个回调对象,从而加入自定义的程序逻辑,即AOP中通知。因此,在系统中就需要一个负责根据一定的策略,创建对象的工厂角色,在Spring的AOP实现中,ProxyFactoryBean正是扮演了这个角色。

3 AOP应用实例

考虑一个超级玛丽游戏设计,在游戏的初始化后,人物每次前进一步都可能碰见方块的阻挡,玛丽是否打碎砖块?定义GameRole接口,利用四个方法表示玛丽的行走。四个方法都是简单的坐标变换,而在游戏中重要的就是玛丽在行走的过程中会遇到一些方块,打碎这些方块会爆出一些东西,也就是说四个方法都应该调用一个doBox()方法来表示打碎物品后的处理。

在四个方法中都应有doBox()方法,而该方法可能有很多的内容,同时玛丽还有可能增加飞行和游泳等动作,这样就造成了大量的代码重复,这个时候就要考虑使用AOP来解决了。

编写一个切面,定义doBox方法作为行走方法的后置通知;首先定义一个名为afterPointcut的切点;接着定义一个后置通知;编写配置文件game-config.xml:

最后定义一个游戏运行代码。

当然这只是一个简单的模拟游戏,实际还有很多问题这里没有解决,不过只要熟悉了AOP的使用,一定可以将游戏制作的是否完善。经过这样设计的系统,符合MVC设计模式,合理的划分了系统层次,实现了松散耦合的思想。同时加快了系统的开发速度,增加了系统整体部署的可伸缩性,改善了系统的应用性能。

4 结束语

本文探讨了一种新的编程思想和开发技术,借助Spring AOP,使得Spring成为成功的J2EE架构框架,它使得开发人员可以集中关注于系统的核心商业逻辑,使用AOP来灵活处理一些具有横切性质的系统级服务,已经成为一种非常适用的解决方案。

参考文献:

[1] 张国平,万仲保,刘高原.Spring AOP框架在J2EE中的应用[J].微计算机信息,2007(36):254.

[2] 罗时飞.精通Spring2.0[M].北京:电子工业出版社,2007:43-198.

[3] 石丹丹.面向方面编程模式的探讨[J].武汉理工大学学报,2005,27(1):93-95.

[4] 张钰.精通Spring 2.x Java Web开发[M].北京:电子工业出版社,2008:76-115.

[5] Harrop R,Machacek J.Spring专业开发指南[M].北京:电子工业出版社,2006:49-182.

spring框架篇2

摘要: 本文介绍了SPRING框架设计,在表现层使用了Struts技术,通过配置将Struts技术与Spring框架集成;在商务逻辑层利用了Spring框架,定义了基于AOP事务管理,增强了系统的稳定性;在数据层定义了DAO的基类,并将其配置到Spring中,为系统提供统一的错误层次。

Abstract: This thesis introduced Spring framework. Present tier uses Struts technique which is integrated into Spring through the configuration. Define the transaction management based on AOP technique in business tier in order to enhance the stability and flexibility of system. Define the base DAO class and configure in Spring framework in data tier to provide the standard exception types.

关键词: 软件架构;可维护性;事务管理

Key words: software architecture;maintainability;transaction management

中图分类号:TP392文献标识码:A文章编号:1006-4311(2010)16-0158-02

0引言

为了高效的完成业务功能需要系统具有良好的稳定性、可维护性和易于扩展的特点。以Spring为核心,以Struts为前端web表示层开发,以Hibernate为O/R映射的工具,建立了松散耦合软件架构,使系统的灵活性大大的提高。

1系统的架构设计

1.1 系统的架构分层MVC是一种经典的软件架构,其生成结构严谨的子系统化应用程序的有效性已得到证实[1]。本系统架构按照MVC的设计模式分为三层分别是表示层(Presentation)、商务层(Business)、数据层(Data)[2]。

表示层使用Struts应用框架作为实现框架,并将Spring的Web Application配置到Struts中。Struts最早是作为Apache Jakarta项目的组成部分问世运作。项目的创立者希望通过对该项目的研究,改进和提高Java Serve Pages (JSP) ,Servlet,标签库以及面相对象的技术水准[3]。

商务层和数据层使用Spring框架和Hibernate。处理了BO和DAO的依赖,处理了接口和实现类的依赖,事务处理,在DAO层对Hibernate API的包装,在DAO层的异常包装转换。Hibernate完成ORM功能。

基于Spring的表示层、商务层、数据层分层设计即使实现三层的松散耦合,又提供了集中配置的功能,使系统的各层功能明确,使系统的可维护性大大提高。

1.2 层间的调用的规约禁止表示层,商务逻辑层,数据访问层的跨层调用。数据信息的跨层传递可以使用DTO,如果PO信息量满足要求也可以把PO直接当作DTO使用,DTO类型不限可以使Java Bean,Map。DAO,BO必须声明接口,并且在编码中只允许使用接口类型,不允许出现实现类,增强系统可维护性,减少耦合性。

2数据访问层

2.1 设计的目的和方法主要目的是能够清晰地划分出应用层次而不管使用何种数据访问和事务管理技术;使应用对象之间的耦合松散。业务对象不再依赖于数据访问和事务策略;不再有硬编码的lookup;不再有难于替换的singletons;不再有自定义的服务注册。从而增强了系统可维护性。设计的方法是采用Spring和Hibernate相结合的方法。

基于O/R(Oriented/Relation)映射数据存取技术的Hibernate,在大型项目中被广泛地使用,它将应用系统逻辑和数据存储逻辑分开,而且它将所有数据存储逻辑都封装在持久层的类中,对应用系统开发者隐藏了数据存储的实现细节。应用系统开发者只要通过持久层提供的接口,以自己熟知的处理方法,向对象发送数据存储或数据装载信息,就可以完成对象持久化的工作。暂态对象和持久对象之间的区别也被隐藏起来,应用系统开发者使用同样的处理方式来对待暂态对象和持久对象。所以选择Hibernate作为底层数据持久化工具。

在Spring框架中可以集成了Hibernate,同时提供了的Hibernate的DAO的抽象类,将异常封装成一致的异常层次。Spring引进了DAO异常体系,主要目的是为了够清晰地划分出应用层次而不管使用何种数据访问和事务技术。

2.2 配置与定义在系统的数据访问层的设计中,为了提供统一的异常处理方式和统一的事务处理方式。在配置文件中定义Hibernate的Session Factory这样可以为所有的Spring中定义的Bean调用。根据IoC的原则,采用声明式的方式配置定义的Base DAO。Base DAO是Spring不可装载的基类,其主要的功能是负责其他的DAO提供Session Factory。这样可以为Hibernate Sessio Factroy提供统一的维护,增强系统的可维护性。用户自定义的DAO类要继承于Hibernate Dao Support类或其子类。并要定义用户自定义DAO的接口,在接口的定义中展现用户自定义类的方法,这样才能由Spring利用java反射机制生成其相应的DAO类的实体。这样所有的DAO子类就可以选择直接通过Hibernate Template来初始化,并将特定的异常转换为unchecked异常体系。

3业务层

业务层是整个系统的核心,其中包含着核心的商业逻辑,需要完善的日志操作日志,全面的事务管理。在本节将介绍在spring框架下配置BO和进行事务管理的配置。

3.1 Spring事务管理的概念Spring提供了一致的事物管理抽象。这个抽象是Spring最重要的抽象之一,它有如下的优点:

①为不同的事务API提供一致的编程模型,如JDBC、Hibernate、iBatis数据库层和JDO。提供比大多数事务API更简单的,易于使用的编程式事物管理API。②整合Spring数据访问抽象。③支持Spring声明式事物管理。

事物管理抽象为Plateform Transaction Manager,它的实现和定义同其他Spring容器中的对象一样都是由容器管理的。这个好处是即使使用JTA,也是有很有价值的抽象:事务代码可以比直接使用JTA更加容易测试。在Spring中,Transaction Exception是unchecked的。底层的事务失败几乎是致命的,很少有情况可以从他们中恢复,开发者依然可以扑获并处理Transaction Exception。Transaction Definition接口用来定义事务的,可以设定如下内容:

事务隔离程度:当前的事务和其他事物的隔离的程度。

事务传播程度:通常在一个事务中执行的所有代码都会在这个事务中运行。但是,如果一个事务上下文已经存在,有几个选项可以指定一个事务性方法执行行为。例如,简单的在现有的事务中运行,或者挂起现有的事务,创建一个新事务。

事务超时程度:事务在超时前能够运行多久。

只读状态:只读事务不需要修改任何数据。在只读的某些情况下是一种非常有用的优化。

Transaction Status接口为处理事物的代码提供一个简单的控制事务执行和查询状态的方法。通过get Transaction Status方法可以获得Transaction Status对象,他可能代表一个新的或已经存在的事务。如同J2EE事务上下文一样,Transaction Status也是和执行的线程相关联的,用来反映事务的状态。

3.2 基于AOP的事务管理的实现根据分析,决定使用Spring框架结合Hibernate实现事务管理的业务。Spirng和Hibernate本身不具备事务的管理的功能。Spring对Hibernate进行了封装,Hibernate 是JDBC 的轻量级封装。在事务管理过程中,Spring将事务委托给Hibernate,后者又将其委托给底层的JDBC或者JTA,以实现事务管理和调度功能。Hibernate的默认事务处理机制基于JDBC Transaction。JDBC的事务处理功能简单、易用。JTA的功能强大其管理的事务可以跨越connection,但其资源消耗较大。所以决定采用Hibernate的事物管理的默认实现。

通过以上的配置将Spring框架的事务管理功能映射到Hibernate的默认事务管理功能。并且自定义了异常类型Tmj Business Exception,当该异常被抛时,事务将进行回滚操作。

3.3 BO的基类的定义BO负责业务逻辑的对象,不及数据持久化的调用允许在BO抛出异常。BO内有一个或多个DAO Interface的成员变量,DAO初始化是通过Spring框架在xml文件配置的。A_BO调用B_BO必须把B_BO作为A_BO的属性,同时配置到Spring的配置文件中事务处理是控制在BO层,事务模型属于声明型事务。

采用AOP的编程的方法的,当在BO中的方法中抛出Business Exception时,事务自动回滚。在Trace Interceptor类中引用Tmj Logger类将用户的操作的行为记录如日记文件。在BO中利用面向方面的编程方法使事务管理和日志的记录一致的,增强了系统的稳定性,提高了系统的维护性。

4表示层的设计

表示层是同用户交互的界面,负责将数据表示。表示使用广泛使用的Struts应用框架架构。

Struts应用框架通过“Plug-in”元素同Spring框架结合起来。

Base Action的定义:Base Action对Action进行封装,减少了系统的冗余性。 Base Action主要提供如下的功能:get Bean()的将在Application Context中声明的bean引入到Web Application中,便于在表现层引用。

check Login()判断用户是否已经登录。

log AccessInfo()将用户的信息、访问时间和访问的页面ID等信息写入日志文件中。

5总结

在实现过程中,根据Spring提供的AOP的功能,配置完善的事务管理程序为系统提供了统一的透明的事务管理方法;使异常更容易的被分类处理,并记入日志,便于系统管理员分析错误;使系统的稳定性大大提高。

参考文献:

[1]Richard Jensen. Mapping Classes to Relational Tables. Java Pro, 2004, (4):11-12.

[2]孙卫琴.基于MVC的Java Web设计与开发.电子工业出版社,2004.

[3]萨师煊,王珊.数据库系统概论.高等教育出版社,2004.

spring框架篇3

摘 要 随着科学技术的不断更新,企业对计算机软件的要求越来越高,不仅在功能方面提高了要求,而且在性能方面也有很高的要求,因此,推动了计算机编程技术的发展,目前Struts2、Spring和Hibernate三大开源框架已经成为软件系统开发应用的首选技术,大大的提高了项目的开发效率、可扩展性和可维护性。文章阐述了Struts2框架工作原理、Hibernate框架的作用及其对象状态以及Spring框架的模块。

关键词 Struts2框架;Spring框架;Hibernate框架

中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2013)20-0049-01

1 Struts2、Spring和Hibernate三大框架简介

框架是JavaEE开发领域炙手可热的一个名词。目前技术领域存在很多种框架技术,能够有效的解决JavaEE应用开发中很多通用的问题,其中Struts2、Hibernate以及Spring是目前最主流的、使用最广泛的开源框架,每个框架专注于解决不同的问题,具有很强的代表性。其中,Struts2框架是一个MVC框架;Hibernate框架是一个ORM框架;而Spring框架是一个综合性的框架,是一个轻量级的解决方案。这三个框架往往各司其职,在应用中的不同层面发挥其作用。

2 Struts2框架工作原理

Struts2框架已经盛行多年,然而Struts2与Struts1之间并不是扩展和升级的关系。Struts2是著名框架WebWork的扩展,WebWork是一个很优秀的MVC框架,但是由于是一个新兴的框架,在一段时间内没有被广泛使用。后来,Struts和WebWork社区决定将二者合并,于是推出了Struts2框架。Struts2框架兼具Struts1和WebWork的优点,从而得到了广泛的使用。

Struts2的工作原理比较复杂:

1)客户端向服务器端提交请求,容器初始化HttpServletRequest请求对象。

2)请求对象被一系列的Servlet过滤器过滤。Struts2中的过滤器有3种:①ActionContextCleanUp过滤器,是一个可选的过滤器,主要用来集成其他框架;②其他插件的核心过滤器,譬如:SiteMesh插件的过滤器;③FilterDispatcher过滤器,是Struts2 API中提供的过滤器,是必选的过滤器。

3)FilterDispatcher过滤器调用ActionMapper,决定该请求是否需要调用某个Action。

4)如果请求需要调用某个Action,ActionMapper将通知FilterDispatcher过滤器把请求的处理交给ActionProxy来处理。

5)ActionProxy通过Configuration Manager解析框架的配置文件struts.xml,找到需要调用的Action类。

6)ActionProxy将创建一个ActionInvocation实例。

7)ActionInvocation实例使用命令模式回调Action中的execute方法,Action调用业务逻辑类完成业务逻辑。在调用Action的前后,将调用该Action涉及的相关拦截器。

8)Action执行完毕后,ActionInvocation根据struts.xml中的配置找到对应的返回结果,返回给JSP、FreeMarker等模版文件。

3 Hibernate框架的作用及其对象状态

Hibernate是一个ORM(Object-Relational Mapping)框架,主要作用是简化应用的数据持久层编程,不需要编程人员花大量的时间编写SQL和JDBC代码。可见,Hibernate框架位于应用层和数据库之间,解决数据持久层编程。Hibernate框架主要包括持久化对象(persistent Object):是Hibernate框架中非常重要的组成部分,简称为PO。PO用来映射数据库中的记录,可以通过修改PO来修改数据库记录;包括Hibernate属性文件(hibernate.properties):使用Hibernate进行数据持久层编程,相关的数据库访问信息需要在Hibernate属性文件中配置,譬如,数据库驱动类、连接串、用户名、密码等,也可以使用名字为hibernate.cfg.xml的xml文件配置属性;还包括Hibernate映射文件(XML Mapping):持久化对象映射数据库中的记录,其映射关系依靠Hibernate框架的映射文件配置,映射文件是XML文件,往往使用*.hbm.xml形式命名,其中*是持久化对象的类名。

Hibernate框架是一个完整的ORM框架,以对象为基础,通过操作对象,进一步操作对象关联的数据库记录。持久化类与数据表对应,持久化的对象则映射数据库记录。持久化的对象有三种状态:瞬时状态,当通过new操作符实例化了一个对象,而这个对象并没有被Session对象操作,也就是该对象没有与一个Session对象关联时,那么这个对象就称为瞬时状态对象,瞬时状态的对象与普通对象没有区别,没有与数据库的记录有映射关系;持久状态,如果一个对象与某一个Session对象关联,例如被Session对象刚加载的、刚保存的、刚更新的,那么该对象就称为持久状态对象。持久状态的对象与数据库中一条数据相对应,并拥有持久化标识。当持久状态的对象有改变时,当事务提交后,Hibernate会自动检测到对象的变化,并持久化到数据库中;脱管状态,当与持久状态对象关联的Session关闭后,该对象就变成脱管状态。脱管状态的对象引用依然有效,可以继续使用,当脱管状态的对象再一次与某个Session关联后,脱管状态对象将转变为持久状态,脱管期间进行的修改将被持久化到数据库中。

4 Spring框架的模块

企业级应用开发总是涉及方方面面,Spring框架是一个轻量级的解决方案,致力于创建“快装式企业应用”。Spring框架包括一系列的特性,被组织在七个模块中,可以把Spring框架看成一个标准的开发组件。Spring框架被设计成无侵入式的方式,即企业应用可以根据需要选择Spring框架中必要的组件,而忽略其他部分,以做到最小范围依赖的Spring框架。

Spring框架包含了7个模块,每个模块对于解决不同的问题。Spring Core模块:是最核心的模块,封装了Spring框架核心包,主要提供了Spring IoC(控制反转)容器。IoC是Spring框架的基础,所有其他特性都是基于IoC之上;Spring Context模块:提供了对Spring中对象的框架式访问方式,并包括国际化、事件传播等特性;Spring DAO模块:提供了JDBC的抽象层,是集成JDBC的封装包,能够避免JDBC繁琐冗长代码,同时还提供了声明性事务管理特性;Spring ORM模块:提供了集成常用ORM框架的封装包,包括JDO、JPA、Hibernate、iBatis等。使用该模块可以更为便捷的使用ORM框架,而且还可以同时使用Spring的其他特性,如声明性事务等;Spring Web模块:提供了Web开发的一些基础特性,如上传文件等,同时提供了与Web框架集成的封装包,如集成Struts2框架;Spring AOP模块:AOP(面向切面编程)是Spring中除了IoC外的另外一个核心概念,该模块提供了符合AOP联盟规范的AOP实现,可以降低应用的耦合性,提高扩展性;Spring MVC模块:该模块提供了一个MVC框架。Spring框架包含了一系列的特性,可以根据应用的具体需要来选择使用部分组件。Spring框架可以在任何类型的应用中使用,譬如:桌面应用、Web应用、C/S应用等。

参考文献

[1]柯常钦,史毓达.基于SSH框架的Web应用系统开发研究[J].湖北第二师范学院学报,2010(08):102-105.

[2]符钰.基于Struts2+Hibernate3+Spring3框架的Web[J].金华职业技术学院学报,2013(06):61-64.

[3]武宝珠,梁声灼,牛德雄.基于Struts2+Spring+Hibernate架构构建Web应用系统[J].计算机与现代化,2009(08):43-46.

[4]李雷孝,谢芳,刘晓军,赵丽华,李昆.SSH整合框架的研究与应用[J].内蒙古工业大学学报,2012(02):40-44.

注:本文为网友上传,不代表本站观点,与本站立场无关。

上一篇:mvc框架范文 下一篇:框架结构范文