APP下载

基于Spring的定时器的应用实现

2015-03-03赵晓丽

关键词:任务调度长治配置文件

赵晓丽

(长治学院 计算机系,山西 长治 046011)

基于Spring的定时器的应用实现

赵晓丽

(长治学院 计算机系,山西 长治 046011)

结合定时器的工作原理和轻量级Spring的体系框架,文章在定时器执行作业的原理和过程的基础上,依托Spring实现了通过简单的配置来构建重复的任务计划,展示了Spring框架实现定时器的优势.

定时器;Timer;Quatz

在项目程序开发过程中,某些动作或周期性工作经常需要控制定时完成或者重复执行,这时就需要使用定时器.如某一单位的员工考勤系统,需要在固定的时间对员工刷卡数据的提取、审核以及数据报表的产生等任务进行固定重复执行,这些问题都离不开定时器来实现这个功能.因此,定时器的利用是软件项目开发中被广泛应用是非常重要的组成部分.近年来,轻量级容器的优势和使用热潮,使得每隔一段时间都会有新的轻量级容器出现.尽管这样,作为轻量级容器的原始代表,Spring能够快速地将不同的组件组装成一个应用程序.作为Spring这种应用较成熟的轻量级框架,Spring会将定时任务的调用部分提到配置文件当中,使定时器的触发条件变得更加灵活,配置简单,实现起来方便.

1 定时器概述

定时器的出现是为了简化定时任务的自动执行,从而大大减少人员的重复工作量.大多数应用系统中利用时间功能来实现定时任务的自动执行,对执行时间有精确要求,由人工来掌控会降低其正确性和准确性,而定时器正好可以解决这个问题.

在Java环境中,实现多任务调度执行的程序框架就是定时器.它由JavaAPI的TimerTask来实现多任务的调度,它使得程序员开发起来较为容易些.目前,大多数系统中的时间功能不能满足用户对自动执行的定时任务的复杂需求,然而单独开发专业的定时系统,无疑会增加开发成本和时间,而Spring的定时器功能强大,实现起来方便,可以降低开发成本,并且能够获得比重新开发定时器更高的可靠性,可以在系统中广泛应用.

2 Spring框架体系

软件行业中,企业应用软件开发变得越来越庞大,业务本身也越来越复杂.为了解决软件程序开发的复杂性,出现了很多解决业务问题的应用框架,而Spring是最具典型代表的.Spring是一个开源框架,它的可开放性,它的非侵入式性,使得应用中的对象并不强制依赖于Spring的特定类.软件开发人员可以依托设计模式与分层架构优势,根据业务本身需要可以自由选择Spring的某项技术或全部,达到快速简化软件应用开发的目的.

通俗地讲,Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架,其主要核心是IoC模式,即反向控制.作为一个轻量级的解决J2EE应用程序问题的一站式框架,用Spring的IOC容器将对象之间的依赖关系通过配置文件交给Spring,就可以控制业务对象之间的依赖注入,让我们更专注于应用逻辑,避免硬编码所造成的组件间过度程序耦合.另外,Spring 还有一个基于控制反转(IOC)的功能强大而实现灵活的Web框架,可以很方便集成各种优秀框架,如Struts,Hibernate,Hession,Quartz.Spring的这些优点使开发人员编写的程序代码更加简洁、易于管理、维护而且便于测试其准确性,同时也成为Spring中的各种模块最基础的支持.

Spring有分层的体系结构,框架由七个模块组成,如图1所示.

图1 Spring框架体系

1) Spring Core是整个框架的核心模块,提供了基于依赖注入技术的构件组装机制.即采用IoC(Inversion of Control)控制反转中的核心接口BeanFacotory,将应用配置文件和对象依赖说明从实际的应用代码中分离出来.

2) Spring DAO模块抽取数据库访问中的大量重复代码,使得数据库操作代码干净简洁,免去了繁琐的数据库访问控制和异常处理的工作.

3) Spring ORM是对象/关系映射集成模块, Spring提供了几种流行的ORM框架的集成,包括Hibernate,JDO和iBATIS SQL映射等对象关系映射工具.

4) Spring AOP模块采用了面向切面编程的理论, 对重复代码进行整理,把每个操作方法当作一个切面单独存放在某个模块中,让业务共同使用这段代码,执行不同的方法.这样就可以通过读取配置文件,提供统一的事务、日志、安全管理等服务.

5) SpringMVC模块提供了基于MVC设计模式的Web应用程序开发,它可以通过策略接口进行配置.使得Spring框架不绑定特定J2EE 服务的可重用业务和数据访问对象,达到在不同环境之间的重用.

6) Spring应用上下文(Context)模块提供一个配置文件,把上下文模块的信息给Spring 框架,对核心模块中的BeanFactory进行扩展,并增加了诸如对JNDI、EJb、电子邮件、校验以及调用功能等的企业服务.

7) Spring Web 模块是基于Web应用程序的上下文模块而建立的,其主要功能是给基于 Web 的应用程序提供上下文服务.

3 定时器的实现

在Java中也可以实现定时器的配置,Java定时器的实现有两种方法:一个是使用Timer类,另一个是使用OpenSymphony的Quartz使用.这两种配置方法都能够实现定时任务的功能.Spring框架的优势是对以上两种定时器实现方式提供了支持,并且简化Java中定时任务的实现.用Spring实现定时器的过程分为3步.

1)创建定时任务类;

2)注册定时任务类,配置计划和任务调度器;

3)在Web项目中启动定时任务.

3.1 Spring中使用Timer实现定时器

Timer实现定时任务的步骤如图2所示.

1)首先利用TimerTask类创建定时任务类,部分代码如下:

Public class TimerTask extends TimerTask

图2 利用Timer开发定时任务步骤

{ ……

Public void run()

{ …………. //执行定时器任务}

………

}

2)注册定时任务类,配置任务计划及其调度器.首先新创建一个TimerConfig.xml,放在WEB-INF文件夹下.部分代码如下:

……

3)在Web项目中启动定时服务.部分代码如下:

……

contextConfigLocation

/WEB-INF/TimerConfig.Xml

org.springframework.web.context.ContextLoaderListener

………

3.2 在Spring中使用Quartz实现定时器

Quartz是一个开源的作业调度框架,它由OpenSymphony组织用java编写而成.Quartz能够创建简单或繁杂的定时任务.通过Quartz来开发定时任务如图3所示.

图3 利用Quartz开发定时任务步骤

1)首先创建定时任务类MainTask.MainTask.java部分代码如下:

package com.gc.action;

public class MainTask {

……

public void execute( ) { //执行定时器任务

……

}

……

}

2)注册定时任务类,配置任务计划及其调度器.配置文件TimerConfig.xml的部分代码如下:

class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<--指定要执行的定时任务类-->

<--指定执行任务的方法名称-->

class="org.springframework.scheduling.quartz.CronTrig-gerBean">

<--设置要运行的时间-->

<--注册定时器-->

<--注入定时器实体-->

3)在Web项目中启动定时服务.部分代码如下:

…………

contextConfigLocation

/WEB_INF/TimerConfig.xml

org.springframework.web.context.ContextLoaderListener

………

3.3 两种方式的比较

这两种方式实现的开发步骤基本都一样,在Spring中使用Timer实现定时器的功能,并没有减少代码量,只提供了一种使用Timer的解决方案,其原理比较简单、实现起来也方便容易,适用于执行简单重复任务.缺点是不能指定具体的时间,还必须得继承指定的类.

使用Quartz实现定时器,Spring将任意类中的任意方法注册为定时任务,不仅可以灵活设定定时器启动的时间,还可以利用定时器参数的设置代替了原有的代码量,提高了系统的灵活性,减少了文件数量.因此Spring中的Quartz应用比较广泛.

4 结束语

本文结合Spring框架的核心优势,利用反向控制模式将对象之间的依赖注入到定时器的软件实现中,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑.

[1] 冯 涛,李 鹏,崔炳得.在Web应用中实现计划任务调度.河北工程技术高等专科学校学报,2006,3(1):41-43

[2] 郭 峰.Spring从入门到精通.北京:清华大学出版社,2006

[3] ROB Harrop,JAN Machacek.Pro Spring中文版.夏 昕,译.北京:电子工业出版社,2006

[4] 薛 峰,梁 锋,徐书勋,等.基于Spring MVC框架的Web研究与应用.合肥工业大学学 报(自然科学版),2012,35(3):337-340

The Application of Spring Timer

ZHAO Xiaoli

(Computer Science Department, Changzhi University, Changzhi 046011, China)

Combined with?the working principle of timer and the lightweight Spring framework architecture. In this paper, on the basis of the operation principle and process of the timer , construct the repeated task plan through a simple configuration relying on Spring , and demonstrated the advantages of the Spring framework to achieve the timer.

timing device; Timer;Quatz

2015-10-20 基金项目:山西省教研项目“基于云计算的虚拟实验教学改革研究“(J2014113).

赵晓丽(1980-),女,河北临西人,长治学院计算机系讲师,主要研从事计算机网络应用技术研究.

1672-2027(2015)04-0048-06

TP391.13

A

猜你喜欢

任务调度长治配置文件
长治:考察调研 绿色防控
长治药茶产业带动农民增收
山西长治:“三级联动”保“三秋”生产
从Windows 10中删除所有网络配置文件
用软件处理Windows沙盒配置文件
当当鼓
基于PEPA的云计算任务调度性能分析
互不干涉混用Chromium Edge
基于改进NSGA-Ⅱ算法的协同制造任务调度研究
基于Zookeeper的配置管理中心设计与实现