国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Spring的定時器的應(yīng)用實現(xiàn)

2015-03-03 05:30趙曉麗
關(guān)鍵詞:任務(wù)調(diào)度長治配置文件

趙曉麗

(長治學(xué)院 計算機系,山西 長治 046011)

基于Spring的定時器的應(yīng)用實現(xiàn)

趙曉麗

(長治學(xué)院 計算機系,山西 長治 046011)

結(jié)合定時器的工作原理和輕量級Spring的體系框架,文章在定時器執(zhí)行作業(yè)的原理和過程的基礎(chǔ)上,依托Spring實現(xiàn)了通過簡單的配置來構(gòu)建重復(fù)的任務(wù)計劃,展示了Spring框架實現(xiàn)定時器的優(yōu)勢.

定時器;Timer;Quatz

在項目程序開發(fā)過程中,某些動作或周期性工作經(jīng)常需要控制定時完成或者重復(fù)執(zhí)行,這時就需要使用定時器.如某一單位的員工考勤系統(tǒng),需要在固定的時間對員工刷卡數(shù)據(jù)的提取、審核以及數(shù)據(jù)報表的產(chǎn)生等任務(wù)進行固定重復(fù)執(zhí)行,這些問題都離不開定時器來實現(xiàn)這個功能.因此,定時器的利用是軟件項目開發(fā)中被廣泛應(yīng)用是非常重要的組成部分.近年來,輕量級容器的優(yōu)勢和使用熱潮,使得每隔一段時間都會有新的輕量級容器出現(xiàn).盡管這樣,作為輕量級容器的原始代表,Spring能夠快速地將不同的組件組裝成一個應(yīng)用程序.作為Spring這種應(yīng)用較成熟的輕量級框架,Spring會將定時任務(wù)的調(diào)用部分提到配置文件當中,使定時器的觸發(fā)條件變得更加靈活,配置簡單,實現(xiàn)起來方便.

1 定時器概述

定時器的出現(xiàn)是為了簡化定時任務(wù)的自動執(zhí)行,從而大大減少人員的重復(fù)工作量.大多數(shù)應(yīng)用系統(tǒng)中利用時間功能來實現(xiàn)定時任務(wù)的自動執(zhí)行,對執(zhí)行時間有精確要求,由人工來掌控會降低其正確性和準確性,而定時器正好可以解決這個問題.

在Java環(huán)境中,實現(xiàn)多任務(wù)調(diào)度執(zhí)行的程序框架就是定時器.它由JavaAPI的TimerTask來實現(xiàn)多任務(wù)的調(diào)度,它使得程序員開發(fā)起來較為容易些.目前,大多數(shù)系統(tǒng)中的時間功能不能滿足用戶對自動執(zhí)行的定時任務(wù)的復(fù)雜需求,然而單獨開發(fā)專業(yè)的定時系統(tǒng),無疑會增加開發(fā)成本和時間,而Spring的定時器功能強大,實現(xiàn)起來方便,可以降低開發(fā)成本,并且能夠獲得比重新開發(fā)定時器更高的可靠性,可以在系統(tǒng)中廣泛應(yīng)用.

2 Spring框架體系

軟件行業(yè)中,企業(yè)應(yīng)用軟件開發(fā)變得越來越龐大,業(yè)務(wù)本身也越來越復(fù)雜.為了解決軟件程序開發(fā)的復(fù)雜性,出現(xiàn)了很多解決業(yè)務(wù)問題的應(yīng)用框架,而Spring是最具典型代表的.Spring是一個開源框架,它的可開放性,它的非侵入式性,使得應(yīng)用中的對象并不強制依賴于Spring的特定類.軟件開發(fā)人員可以依托設(shè)計模式與分層架構(gòu)優(yōu)勢,根據(jù)業(yè)務(wù)本身需要可以自由選擇Spring的某項技術(shù)或全部,達到快速簡化軟件應(yīng)用開發(fā)的目的.

通俗地講,Spring是一個輕量級控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架,其主要核心是IoC模式,即反向控制.作為一個輕量級的解決J2EE應(yīng)用程序問題的一站式框架,用Spring的IOC容器將對象之間的依賴關(guān)系通過配置文件交給Spring,就可以控制業(yè)務(wù)對象之間的依賴注入,讓我們更專注于應(yīng)用邏輯,避免硬編碼所造成的組件間過度程序耦合.另外,Spring 還有一個基于控制反轉(zhuǎn)(IOC)的功能強大而實現(xiàn)靈活的Web框架,可以很方便集成各種優(yōu)秀框架,如Struts,Hibernate,Hession,Quartz.Spring的這些優(yōu)點使開發(fā)人員編寫的程序代碼更加簡潔、易于管理、維護而且便于測試其準確性,同時也成為Spring中的各種模塊最基礎(chǔ)的支持.

Spring有分層的體系結(jié)構(gòu),框架由七個模塊組成,如圖1所示.

圖1 Spring框架體系

1) Spring Core是整個框架的核心模塊,提供了基于依賴注入技術(shù)的構(gòu)件組裝機制.即采用IoC(Inversion of Control)控制反轉(zhuǎn)中的核心接口BeanFacotory,將應(yīng)用配置文件和對象依賴說明從實際的應(yīng)用代碼中分離出來.

2) Spring DAO模塊抽取數(shù)據(jù)庫訪問中的大量重復(fù)代碼,使得數(shù)據(jù)庫操作代碼干凈簡潔,免去了繁瑣的數(shù)據(jù)庫訪問控制和異常處理的工作.

3) Spring ORM是對象/關(guān)系映射集成模塊, Spring提供了幾種流行的ORM框架的集成,包括Hibernate,JDO和iBATIS SQL映射等對象關(guān)系映射工具.

4) Spring AOP模塊采用了面向切面編程的理論, 對重復(fù)代碼進行整理,把每個操作方法當作一個切面單獨存放在某個模塊中,讓業(yè)務(wù)共同使用這段代碼,執(zhí)行不同的方法.這樣就可以通過讀取配置文件,提供統(tǒng)一的事務(wù)、日志、安全管理等服務(wù).

5) SpringMVC模塊提供了基于MVC設(shè)計模式的Web應(yīng)用程序開發(fā),它可以通過策略接口進行配置.使得Spring框架不綁定特定J2EE 服務(wù)的可重用業(yè)務(wù)和數(shù)據(jù)訪問對象,達到在不同環(huán)境之間的重用.

6) Spring應(yīng)用上下文(Context)模塊提供一個配置文件,把上下文模塊的信息給Spring 框架,對核心模塊中的BeanFactory進行擴展,并增加了諸如對JNDI、EJb、電子郵件、校驗以及調(diào)用功能等的企業(yè)服務(wù).

7) Spring Web 模塊是基于Web應(yīng)用程序的上下文模塊而建立的,其主要功能是給基于 Web 的應(yīng)用程序提供上下文服務(wù).

3 定時器的實現(xiàn)

在Java中也可以實現(xiàn)定時器的配置,Java定時器的實現(xiàn)有兩種方法:一個是使用Timer類,另一個是使用OpenSymphony的Quartz使用.這兩種配置方法都能夠?qū)崿F(xiàn)定時任務(wù)的功能.Spring框架的優(yōu)勢是對以上兩種定時器實現(xiàn)方式提供了支持,并且簡化Java中定時任務(wù)的實現(xiàn).用Spring實現(xiàn)定時器的過程分為3步.

1)創(chuàng)建定時任務(wù)類;

2)注冊定時任務(wù)類,配置計劃和任務(wù)調(diào)度器;

3)在Web項目中啟動定時任務(wù).

3.1 Spring中使用Timer實現(xiàn)定時器

Timer實現(xiàn)定時任務(wù)的步驟如圖2所示.

1)首先利用TimerTask類創(chuàng)建定時任務(wù)類,部分代碼如下:

Public class TimerTask extends TimerTask

圖2 利用Timer開發(fā)定時任務(wù)步驟

{ ……

Public void run()

{ …………. //執(zhí)行定時器任務(wù)}

………

}

2)注冊定時任務(wù)類,配置任務(wù)計劃及其調(diào)度器.首先新創(chuàng)建一個TimerConfig.xml,放在WEB-INF文件夾下.部分代碼如下:

……

3)在Web項目中啟動定時服務(wù).部分代碼如下:

……

contextConfigLocation

/WEB-INF/TimerConfig.Xml

org.springframework.web.context.ContextLoaderListener

………

3.2 在Spring中使用Quartz實現(xiàn)定時器

Quartz是一個開源的作業(yè)調(diào)度框架,它由OpenSymphony組織用java編寫而成.Quartz能夠創(chuàng)建簡單或繁雜的定時任務(wù).通過Quartz來開發(fā)定時任務(wù)如圖3所示.

圖3 利用Quartz開發(fā)定時任務(wù)步驟

1)首先創(chuàng)建定時任務(wù)類MainTask.MainTask.java部分代碼如下:

package com.gc.action;

public class MainTask {

……

public void execute( ) { //執(zhí)行定時器任務(wù)

……

}

……

}

2)注冊定時任務(wù)類,配置任務(wù)計劃及其調(diào)度器.配置文件TimerConfig.xml的部分代碼如下:

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

<--指定要執(zhí)行的定時任務(wù)類-->

<--指定執(zhí)行任務(wù)的方法名稱-->

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

<--設(shè)置要運行的時間-->

<--注冊定時器-->

<--注入定時器實體-->

3)在Web項目中啟動定時服務(wù).部分代碼如下:

…………

contextConfigLocation

/WEB_INF/TimerConfig.xml

org.springframework.web.context.ContextLoaderListener

………

3.3 兩種方式的比較

這兩種方式實現(xiàn)的開發(fā)步驟基本都一樣,在Spring中使用Timer實現(xiàn)定時器的功能,并沒有減少代碼量,只提供了一種使用Timer的解決方案,其原理比較簡單、實現(xiàn)起來也方便容易,適用于執(zhí)行簡單重復(fù)任務(wù).缺點是不能指定具體的時間,還必須得繼承指定的類.

使用Quartz實現(xiàn)定時器,Spring將任意類中的任意方法注冊為定時任務(wù),不僅可以靈活設(shè)定定時器啟動的時間,還可以利用定時器參數(shù)的設(shè)置代替了原有的代碼量,提高了系統(tǒng)的靈活性,減少了文件數(shù)量.因此Spring中的Quartz應(yīng)用比較廣泛.

4 結(jié)束語

本文結(jié)合Spring框架的核心優(yōu)勢,利用反向控制模式將對象之間的依賴注入到定時器的軟件實現(xiàn)中,將對象之間的依賴關(guān)系交給Spring,降低組件之間的耦合性,讓我們更專注于應(yīng)用邏輯.

[1] 馮 濤,李 鵬,崔炳得.在Web應(yīng)用中實現(xiàn)計劃任務(wù)調(diào)度.河北工程技術(shù)高等專科學(xué)校學(xué)報,2006,3(1):41-43

[2] 郭 峰.Spring從入門到精通.北京:清華大學(xué)出版社,2006

[3] ROB Harrop,JAN Machacek.Pro Spring中文版.夏 昕,譯.北京:電子工業(yè)出版社,2006

[4] 薛 峰,梁 鋒,徐書勛,等.基于Spring MVC框架的Web研究與應(yīng)用.合肥工業(yè)大學(xué)學(xué) 報(自然科學(xué)版),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 基金項目:山西省教研項目“基于云計算的虛擬實驗教學(xué)改革研究“(J2014113).

趙曉麗(1980-),女,河北臨西人,長治學(xué)院計算機系講師,主要研從事計算機網(wǎng)絡(luò)應(yīng)用技術(shù)研究.

1672-2027(2015)04-0048-06

TP391.13

A

猜你喜歡
任務(wù)調(diào)度長治配置文件
長治:考察調(diào)研 綠色防控
長治藥茶產(chǎn)業(yè)帶動農(nóng)民增收
山西長治:“三級聯(lián)動”?!叭铩鄙a(chǎn)
從Windows 10中刪除所有網(wǎng)絡(luò)配置文件
用軟件處理Windows沙盒配置文件
當當鼓
基于PEPA的云計算任務(wù)調(diào)度性能分析
互不干涉混用Chromium Edge
基于改進NSGA-Ⅱ算法的協(xié)同制造任務(wù)調(diào)度研究
基于Zookeeper的配置管理中心設(shè)計與實現(xiàn)
获嘉县| 宁波市| 九龙坡区| 皋兰县| 宾阳县| 金乡县| 修水县| 丰原市| 禹城市| 泽普县| 金溪县| 杂多县| 凉山| 大庆市| 平塘县| 岳普湖县| 扎兰屯市| 会昌县| 凤凰县| 崇阳县| 额尔古纳市| 渑池县| 平和县| 集贤县| 彰化市| 华容县| 抚顺县| 拉萨市| 江陵县| 山阴县| 内江市| 磴口县| 沁阳市| 澄城县| 建德市| 玛纳斯县| 桦川县| 随州市| 永胜县| 吉木乃县| 伊宁县|