首先看乙個定時任務的配置例項
<?xml version="1.0" encoding="utf-8"?>
com.sinosig.jobmanage.scandbquartzjob
0 * * * * ?
class="org.springframework.scheduling.quartz.schedule***ctorybean">
這份配置中,定義了乙個定時任務(scandbquartzjob),乙個觸發器(scandbtrigger),乙個排程器(scheduler)。排程器根據觸發器的觸發週期配置,按時執行定時任務。
如果要在**中增加定時任務的啟動、停止開關,以方便管理員對定時任務進行管理,可以這樣做。
1、以排程器為單位進行掛起、啟動
首先從spring容器中,根據排程器的id(scheduler)獲取乙個org.quartz.impl.stdscheduler類的排程器。需要注意的是,雖然spring配置的排程器的類名是org.springframework.scheduling.quartz.schedule***ctorybean,但實際獲取的類是org.quartz.impl.stdscheduler的。小心型別轉換異常。如用這個語句:
stdscheduler factory = (stdscheduler) context.getbean("scheduler");
factory可以提供幾種排程器級別上的啟動、停止方法。包括:start(),pause(),standby(),shutdown()。
start()方法用來啟動排程,這毋庸置疑。pause()和standby()同是暫停,或者叫掛起排程,不過pause()方法已被標記為過期,還是用standby()吧。shutdown()是停止排程,一旦shutdown()了,就不能再用start()方法啟動排程了。
以排程器為單位的操作會對該排程器中包含的所有定時任務起作用。如果乙個排程器下的多個定時任務要求同啟同停,這樣處理倒也不錯。不過如果需要細化到對每個定時任務進行管理,那就不能這麼幹了——除非為每個定時任務單獨定義乙個排程器。
2、以定時任務為單位進行管理
實際上,排程器除了start(),pause(),standby(),shutdown()方法外,還提供了一系列針對定時任務的操作,包括addjob(jobdetail, replace),deletejob(jobname, groupname),resumejob(jobname, groupname),pausejob(jobname, groupname)等。
addjob(jobdetail, replace):向排程器中增加乙個定時任務。第二個引數將決定如果排程器中已有這個定時任務,是否要把它替換成新的定義。但是要注意,addjob方法只增加定時任務,不會為它指定觸發器。所以,如果只用這個方法來新增定時任務,它是不會被排程的。
,deletejob(jobname, groupname):從排程器的指定定時任務組中刪除指定的定時任務。如果配置檔案或**中都沒有指定,那麼定時任務們都在預設的定時任務組(stdscheduler.default_group)中。這個方法會將與指定定時任務相關聯的觸發器等一併刪除掉。
resumejob(jobname, groupname):恢復指定定時任務,pausejob(jobname, groupname):暫停指定定時任務。用這對方法,可以實現針對一條定時任務的暫停、重啟管理操作。我就是這麼幹的。
Spring的任務排程 定時任務
定時任務一般使用quartz,這種方式配置很麻煩。使用spring也可以解決任務排程問題,使用方便簡單 這裡來將下spring如何實現任務排程功能的 1.在xml的配置檔案中加入如下,引入task 省略一些基礎的spring引入.xmlns task xsi schemalocation 省略一些基...
Spring實現定時任務排程
spring的配置 要定時執行的方法 public class hellotask 測試類 public static void main string args cronexpression的配置 字段 允許值 允許的特殊字元 秒 0 59 分 0 59 小時 0 23 日期 1 31 l w c...
Spring框架實現定時任務排程
在spring配置檔案中進行配置基本資訊 在xmlns中新增 xmlns task 在xsi中新增 spring task 3.2.xsd 然後是必須的一項,因為這個是spring提供的定時任務,所以需要進行掃瞄類下的包才能執行相應的操作 然後是設定定時任務 開始在測試類中寫測試 import or...