APP下载

基于Spring MVC及MyBatis的Web应用框架研究

2012-07-25高建华

微型电脑应用 2012年7期
关键词:信用卡组件框架

徐 雯,高建华

0 引言

1 Spring MVC及MyBatis框架研究

针对 Web应用需求的日益增长,快速开发高质量的Web应用系统,成为业界研究的一大热点问题。一般,Web应用表现层由JSP、Servlet实现,主要完成与用户的交互;业务层交给 EJB实现,完成系统核心业务逻辑的处理;数据层由JDBC加DAO对象或是由EJB中的EntityBean实现,负责与各种数据源的交互。由于 EJB提供几乎所有的企业级服务[1],所以本身启动慢,部署比较复杂,而且性能比较差。本文采用Spring MVC设计模式和MyBatis框架,提出了 B/S结构与 C/S结构相结合的 Web应用框架,应用于TOPCard信用卡业务系统,说明Spring MVC和MyBatis在Web系统中的应用,该系统在性能差、复杂度高等方面有很大的改进。

本文的章节安排如下:第二部分对Spring MVC模式进行简述、深入研究MyBatis框架。第三部分以TOPCard信用卡业务系统为例,对一种B/S结构与C/S结构相结合,采用Spring MVC和MyBatis为基础的Web应用框架进行分析和研究。第四部分得到实验结果并进行分析。

1.1 Spring MVC模式

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,3个基本部分为Model、View、Controller[2]。Spring是以轻量级的开源框架,它以控制反转原则和面向方面编程思想为基础,提供管理业务对象服务[3]。Spring框架提供构建Web应用程序的全功能MVC模块[4],它是一种高度可配置的MVC框架。Spring MVC实现了MVC的核心概念,它为Controller和处理程序提供了大量与此模式相关的功能,当向MVC添加反转控制时,它使应用程序高度解耦,提供简单的配置更改就可以动态地更改组件的灵活性,图为Spring MVC设计模式结构,如图1所示:

图1 Spring MVC设计模式结构

Spring MVC的Web框架是一个请求驱动的Web框架,整个框架由Model,View,Controller 3个部件组成。Spring MVC的重要组成部分是Dispatcherservlet,它的主要任务是将请求分发到相应的处理程序,让这些业务程序来处理这些请求。以下是TOPCard信用卡业务系统中Dispatcher Servlet的声明和映射:

Dispatcher Servlet被命名为topcardweb拦截web请求,上述配置将随web应用启动而自动加载,采用通配符与URL对应来进行配置,所有以.ctl作为后缀的请求将都会被topcardweb拦截,并将拦截的请求通过控制器映射(Handdler Mapping)发送给相应的Bean进行处理。

1.2 MyBatis框架

MyBatis框架集合多种操作型关系数据的概念和方法,它是一个强大的数据访问工具和解决的方法[5]。MyBatis框架主要包含DAO组件与SQL Map组件两大类,MyBatis常用工具有Log管理等,其架构图,如图2所示:

图2 MyBatis架构图

MyBatis DAO组件的主要目标是抽象化应用程序的数据访问层和持久层的表示方式和位置,使它远离应用程序的业务逻辑,其主要功能是帮助开发人员进行基于DAO设计模式设计和开发J2EE应用程序。SQL Map组件是MyBatis Database Layer框架的重要组成部分,它使用简单的XML配置文件将Java Bean、XML、Map映射成SQL语句,通过SQL语句的执行获得Java Bean、XML、Map等对象。MyBatis SQL Map能大大减少访问数据库的代码,并且提供了一个简洁的框架,MyBatis DAO实现图和SQL Map实现图见参考文献[9]。

Log管理是MyBatis不可缺少的部分,它管理4种模式的日志:①Jakarta Commons Logging(JCL)记录日志信息;②Log4J;③JDK1.4 Logging API;④无日志模式。MyBatis框架使用JCL记录日志信息,JCL使用独立于具体实现的方式提供日志服务,可以插入包括Log4J和JDK1.4 Logging API等不同的日志服务实现。为了对日志做一定的封装,MyBatis采用简单的工厂模式,其Log类结构,如图3所示:

图3 MyBatis平台的Log类结构图

LogFactory依赖Log接口,它是日志的工厂类,Log接口能 通 过 NoLoggingImpl、 JakartaCommonsLoggingImpl、Jdk14LoggingImpl、Log4jImpl来实现。

2 Spring MVC和MyBatis在TOPCard信用卡业务系统中的应用

2.1 TOPCard信用卡业务系统的拓扑结构

TOPCard信用卡业务系统的拓扑结构,包括信用卡的申请、建账制卡、授权、清算等核心业务,提供信用卡业务的核心支持。辅助系统通过与核心信用卡系统的协作来完成信用卡的其他业务功能,如图4所示[8]:

图4 TOPCard信用卡业务系统的拓扑结构

各个系统的功能如下:

(1)TOPCard信用卡业务系统进行信用卡核心业务的处理,包括申请、建账制卡、授权、清算等。

(2)TOPCard信用卡业务系统与TOPCard核心业务系统之间通过在线和批量的方式进行交互。在线方式包括ATM、柜面取现等交易。批量方式包括清算、总帐等文件。

(3)卡中心员工、分行柜员,通过直接登录TOPCard信用卡业务系统的方式进行业务处理。

(4)行内核心系统向 TOPCard信用卡业务系统发出的文件主要有:行内消费预借现金请款文件、柜面还款清算文件、约定还款应答文件。TOPCard信用卡业务系统向行内核心系统返还的文件主要有:会计总账文件、约定还款请求文件。

(5)国际组织将收到的请款文件,给 TOPCard信用卡业务系统进行入账,TOPCard信用卡业务系统批量结束后,将当日的争议退单等信息生成返还文件,传回给各个国际组织前置机,以便传回给国际组织。

(6)辅助业务系统,包括影像征审系统、CallCenter、网银系统、积分系统、防欺诈系统、催收系统、数据集市。

影像征审系统进行申请件的处理、影像的管理以及对持卡人的征审和授信处理,为信用卡系统提供申请信息来源。

CallCenter、网银系统用TOPCard信用卡业务系统提供的客户信息、账户信息等,为客户提供全方位的服务。

积分系统,利用TOPCard信用卡业务系统提供的交易数据,为持卡人累计奖励积分并实现相应的兑换等功能。

防欺诈系统,利用 TOPCard信用卡业务系统提供的交易信息,按照预定的规则给卡中心提供预警信息。

催收系统,处理TOPCard信用卡业务系统中处于拖欠等状态的客户,跟踪对应的客户的行为。

数据集市,对 TOPCard信用卡业务系统的业务数据进行整合,提供各种分析结果用于产品的风险、效益评估,同时作为市场推广和营销的依据。

TOPCard信用卡业务系统,在前台连接模式和客服和卡中心运营渠道中,客服、卡中心通过浏览器访问Web服务器,Web服务器采用JDBC和TCP/IP两种方式与信用卡主机通讯。WEB应用采用Spring MVC框架,应用逻辑采用面向服务的设计思想,资源管理层采用MyBatis的工具对数据库进行访问。

2.2 TOPCard信用卡业务系统的三层结构

TOPCard信用卡业务系统采用B/S与C/S混合模式。在客服和卡中心运营渠道以及前台连接模式中采用 B/S模式,分为 3层结构,具体如下:客服、卡中心、Web服务器、信用卡主机。在联机渠道中,采用C/S模式,分为三层结构,各层之间采用TCP/IP通讯。具体如下:国际组织、各组织接口机、TOPCard系统;银联系统、银联前置、TOPCard系统;行内渠道、行内前置、TOPCard系统。

TOPCard信用卡业务系统建立在B/S与C/S三层结构基础上,这样的设计方法有利于设计大型的分布式程序。通过把系统的功能分离到多个逻辑层面,将一些敏感的数据放在最下层,即在防火墙后面处于一个非常安全的地方。应用服务技术,可以使应用程序基本上不直接访问系统和操作系统,这样就减少了像大多数两层结构的弱点。TOPCard信用卡业务系统的三层结构。如图5所示:

图5 TOPCard信用卡业务系统的三层结构

2.3 TOPCard信用卡业务系统的逻辑结构

Spring MVC及MyBatis架构的整合,能将Web系统中的表示层、业务层和逻辑层有效地分开,从而有利于web系统的整体维护和升级[6]。Controller实现了org. springframework.web.servlet.mvc接口,Model主要用来完成对MyBatis数据库的操作,由Dao,DaoImpl,Service和ServiceImpl相关的接口和类在程序中来实现,View用JSTL和Xml来完成[7],如图6所示:

图6 Spring MVC和iBATIS的整合图

TOPCard信用卡业务系统逻辑结构图,如图7所示:

图7 TOPCard信用卡业务系统逻辑结构图

Spring作为全局控制存在与整个流程之中。

(1)在展现层中,为用户接口(展示页面)提供信息供应,本层采用Spring MVC框架做表现层平台。首先通过JSP页面实现前台交互,负责传送Request和接收Response,然后Spring MVC根据配置文件将DispatcherServlet接收到的Request委派给相应的Controller处理。

(2)在业务层中,实现具体业务逻辑,为应用展现层提供服务支撑,本层采用Spring框架技术实现。管理服务组件的Spring IOC容器,负责向控制器提供Model组件和该组件的DAO组件完成业务,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。

(3)在数据持久层中,为上层业务服务提供数据访问支持,本层采用MyBatis技术实现。依赖于MyBatis的对象化映射和数据库交互,处理DAO组件请求的数据并返回处理结果。

2.4 TOPCard信用卡业务系统运行流程图

TOPCard信用卡业务系统,用Spring MVC作为MVC开发模式做展现层平台,利用MyBatis作为O/R Mapping数据持久层框架,Spring作为全局控制存在与整个流程之中,其运行流程,如图8所示:

图8 TOPCard信用卡业务系统运行流程图

3 实验结果与分析

为了进行实验对比分析,本文进行比较的基于EJB的信用卡业务系统其业务层交给 EJB实现,完成系统核心业务逻辑的处理;数据层由EJB中的 Entity Bean实现,提供原始数据面向对象的封装,借助CMP(容器管理持久性)获得O/R映射能力,完成与各种数据源的交互。实验软件环境参数如下:

信用卡主机、备机:AIX 或 HP-UX或Solaris

数据库:DB2或Oracal

Web服务器:linux(Redhat ES)、WebSphere

银联前置:linux(Redhat ES)或solaris for X86

客服工作站:Windows XP

卡中心工作站:Windows XP

3.1 性能分析

系统性能是一个总体概念,包括了硬件、网络、数据库、应用各个方面的配置和数量,同时还必须考虑配置成本,即不能为了保证系统性能而通过任意扩大系统配置的办法来满足系统性能。因此构建优秀的应用软件体系,对发挥系统整体性能就显得尤为关键。

影响信用卡应用系统总体性能的主要是联机授权模块、批处理及报表模块等,这些模块中的性能薄弱都将导致整个系统的业务无法充分展开,影响到银行的业务运作。

各个模块性能瓶颈可能出现的位置是:联机授权模块主要存在于通讯能力、数据库操作以及应用服务器的信息处理能力;批处理及报表模块的性能瓶颈主要存在于对数据库的读写、文件的写操作以及服务器的计算能力上。由于联机授权模块、批处理及报表模块是系统中对性能要求最高的部分,如表1所示:

表1 TOPCard与基于EJB信用卡业务系统的性能测试结果

TOPCard信用卡业务系统在预测银行10年的业务量下的性能测试结果与基于 EJB的信用卡业务系统的比较。假设信用卡帐户500万张卡,日均交易20万笔,200人并发访问WEB服务。

在性能方面,可以看出基于Spring MVC及IBATIS的TOPCard信用卡业务系统大大优越于基于EJB的信用卡业务系统。

3.2 复杂度分析

基于EJB的信用卡业务系统为了实现全面且完整的系统应用时,重量级容器 EJB会带来诸如部署复杂,运行缓慢,内在服务多等负面作用。EJB要求创建多个组件接口并实现多个不必要的回调方法组件接口要求实现 EJBObject或 EJBLocalObject 以及处理许多不必要的异常。基于XML的EJB部署描述符比较复杂并容易出错。EJB组件并非是真正面向对象的,因为它们在继承和多态性方面的有使用限制开发人员无法在 EJB 容器外部测试 EJB 模块,而在容器内部调试EJB非常复杂和耗时。调用 EJB是一项复杂的任务。即使是在应用程序中使用最基本的EJB也需要对JNDI有一个详细的了解对容器的依赖使得 EJB只能用于服务器组件的开发,无法实现一次编写。

在复杂度方面,基于EJB的信用卡业务系统的复杂度大于基于Spring MVC及IBATIS的TOPCard信用卡业务系统。

3.3 代码复用率分析

Spring是轻量级的框架,对其他对象没有侵入性,代码有很高的复用性,并且是一个免费的开源框架;而 EJB是重量级的框架,难以维护和复用。所以显而易见,基于Spring MVC及IBATIS的TOPCard信用卡业务系统,能解决基于EJB的信用卡业务系统的代码复用率低的问题。

4 总结

本文通过对采用Spring MVC和MyBatis框架为基础的Web应用框架进行分析和研究,可以发现将Sping MVC应用于TOPCard信用卡业务业务系统的架构中,可以有效的将系统的表示层、业务层、逻辑层分开来,提升系统性能,提高了系统的可维护性和可扩展性;将MyBatis应用到于TOPCard信用卡业务系统中,不仅可以大大提高代码的复用性,而且能有效隔离数据库设计和应用中使用的对象模型,这就使得它们两者之间的相关性能降至最低。将Spring作为全局控制存在与整个流程之中,使得系统复杂度大大降低,提高了代码复用率。Web应用框架的研究是一个不断深入、逐步完善的过程,在对Web应用框架不断推广试用的基础上,还将进一步扩展其功能,使其应用领域更加广泛。

[1]Johnson, Juergen Hoeller. R. Expert One-on-One J2EE Development without EJB[M]. Indiana: Wiley Publishing Inc, 2004.

[2]Ren Yongchang, Xing Tao, Xing Zhaofeng, Zheng Jianchun. Application Research for Integrated SSH Combination Framework to Achieve MVC Mode[C]. International Conference on Computational and Information Sciences,pp.449-502, Sept. 2011.

[3]Shi GAO, XingHeng WANG, Xue DENG. Public Computer Education Management System

[4]based on Java EE Lightweight framework[C]. International Conference on Computer Science and Service System, pp. 1486 - 1489, Jun. 2011.

[5]张宇, 王映辉, 张翔南. 基于Spring的MVC框架设计与实现[J]. 计算机工程, Vol.36, No.4, pp.59-62, Feb.2010.

[6]Clinton Begin, Brandon Goodin and Larry Meadors. iBatis in Action. Manning publications Co. Chero Station,2007.

[7]Harvey M.Deitel, Paul J.Deitel著,[M]刘宗田, 苗沛荣等译, Java程序设计教程, 机械工业出版社, 2002.

[8]Kumar, B V Sangeetha, S Subbrahmanya S V著[M], 宋梅, 张学平译, 深入浅出J2EE架构, 清华大学出版社,2006.

[9]TOPCARD信用卡核心系统产品说明书,[K]上海华腾软件系统有限公司, 2009.

[10]封小钰, 王飞. 基于iBATIS 数据库访问技术的研究与应用.[J]电脑开发与应用,Vol.21, No.6, pp.51-53,Apr.2008.

猜你喜欢

信用卡组件框架
无人机智能巡检在光伏电站组件诊断中的应用
框架
广义框架的不相交性
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
信用卡资深用户
信用卡诈骗
办信用卡透支还债夫妻均获刑10年
关于原点对称的不规则Gabor框架的构造
一种基于OpenStack的云应用开发框架