产品销售分析系统的设计与实现
2014-11-05彭玉华刘涛
彭玉华 刘涛
摘 要
本文针对Java EE多层体系结构、关键设计模式进行研究,采用构建轻量级J2EE框架所使用的Struts2、 Ibatis、Spring技术,该框架实现了表现逻辑和业务逻辑的分离,使系统具有较好的扩展性和可维护性。
【关键词】Struts2 iBATIS Spring
1 引言
产品销售是企业的生命线,对产品销售数据进行管理分析,并以可视化的图表方式展示产品销售的各种数据,为企业决策提供准确的参考依据。本文介绍了系统的需求、功能模块划分、技术架构等方案。
2 系统架构设计
本系统采用Java EE的多层结构,这些层次是:控制层、、持久层、领域模型层。 每层在应用程序中有各自的功能,不能与其他层功能耦合。
视图层负责系统数据的显示,它从业务层取得数据并显示数据。当业务层变化时,将自动更新,并传送给控制层。本系统采用Struts2实现MVC框架,视图层由JSP结合Struts2 TagLib来实现。视图层属于MVC开发设计模式中“V”,Struts2框架是实现MVC模式的一个应用框架,它以WebWork的设计为核心,同时兼容Struts1.x。
控制层是MVC框架中的”C”,FilterDispatcher是Struts2框架的核心控制器,主要负责拦截用户请求。响应请求Struts2框架会依据struts.xml配置文件选择相应的Action进行业务处理。
业务层主要负责实现系统的业务逻辑。EJB框架和Spring框架都可实现业务层,Spring框架与应用服务器整合的能力相对EJB3.0要弱,但是Spring框架模块的可分离配置优于EJB3.0的灵活性。
持久层主要负责与数据库的交互,为业务层提供数据库访问功能。使用iBATIS提供的O/R Mapp映射机制,iBATIS通过在SQL开发的工作量和数据库移植性上提供了很大的自由空间,本系统选择采用iBATIS实现持久层。
领域模型层是ORM思想的产物,ORM用对象关联数据表,将这些对象的集合归为一个专门的层即领域模型层。它不再需要开发者建立和维护不必要的数据传输对象来匹配对应的领域对象,而且不需要附加编码。
3 系统总体设计
产品销售是企业经营过程中的一个重要环节,通过产品销售分析系统,可以获取各种产品销售系统,生成各种产品销量和营业额的相关图形,产品销售系统分为产品管理、订单管理和销售分析3个模块。产品管理可以添加、删除、修改产品,维护企业的产品资源;订单管理可以添加、删除、修改订单,维护企业的产品订单;销售分析是根据产品订单数据生成各种产品销售分析图。
4 系统实现
4.1 iBATIS配置文件
根据系统需求分析,产品销售分析系统需要实现产品维护、订单维护以及各种销售分析图形的生成等功能。以产品销售分析系统的订单维护功能为例介绍有关配置。在iBATIS的SQL Map框架中,需要一个配置文件XML配置持久层框架信息,如配置数据库连接JDBC、SQLMap映射文件的加载、SQL Map的配置和优化设定。
4.2 Spring与iBATIS整合实现DAO
本系统框架中采用Spring整合iBATIS结合来实现系统的DAO层。DAO模式是Java EE核心设计模式,用来抽象和封装所有对数据源的访问。Spring对iBATIS整合后,对iBATIS的配置主要是对SqlMapClient节点的配置,实际上是配置了一个SqlMapClient的创建工厂类。本系统Spring的核心配置文件是/WEB-INF/spring-context/applicationContext.xml,系统通过在web.xml中配置Spring监听器来启动Spring,Spring在web.xml中的配置。
系统启动时通过ContextLoadListener初始化Spring容器。然后ContextLoaderListener监听器通过初始化参数connextConfigLocation找到配置文件applicationContext.xml并加载。
SqlMapClient节点配置中,configLocation属性配置了iBATIS映射文件的路径及名称,dataSource属性引入了数据源。
4.3 业务逻辑层设计与事务管理
业务逻辑层是系统架构中核心价值的部分,它主要实现业务规则制定、业务流程的实现等与业务需求有关的系统设计。系统业务逻辑层的设计,采用接口和实现分开的原则,业务逻辑组件接口定义该组件包含的功能,实现类提供该组件的实现。在轻量级JavaEE架构中,DAO组件将事务管理延迟到业务逻辑层管理。通过Spring的声明式事务管理,让业务逻辑层对象的方法具务事务性。
4.4 Spring与Struts2整合管理Action
本系统采用Spring IoC容器来管理业务逻辑组件,利用依赖注入为Action注入业务逻辑组件。Spring插件是通过覆盖Struts2的ObjectFactory来增强核心框架对象的创建。当创建一个对象时,Spring插件会用Struts2配置文件中的class属性去和Spring 配置文件中的id属性进行关联,如果属性名相同,则由Spring创建,否则由Struts2框架自身创建,最后由Spring来装配。
4.5 Spring整合Log4j实现日志管理
Log4j是Apache的一个开源代码项目,它提供了一种细腻的日志管理方式,通过一个配置文件,可以多选择的控件每条日志的输出格式和目的地;通过定义信息的级别,可灵活开关代码中的反馈信息。通过Spring来使用Log4j,可以使Log4j的配置更简单灵活。
5 总结
本文主要介绍该系统各个功能划分,系统框架整合,在该整合框架中如何实现产品维护、订单维护和生成销售分析图等功能。
参考文献
[1]梁建全,周力,孟志勇,田利军.轻量级javaEE框架整合方案[M].北京:人民邮电出版社,2008.
[2]叶健毅.javaEE Eclipse Struts2 Hibernate Spring框架整合应用案例(第2版)[M].北京:人民邮电出版社,2009.
作者单位
1.武昌理工学院 信息工程学院 湖北省武汉市 430223
2.武昌理工学院 信息工程学院计算机科学与技术1201班 湖北省武汉市 430223endprint