Spring quarter

轉載

【一】Spring quarter設置方法一:

(1)新建一個要跑批的類

package com.test.job
public class AutoJob{
   public void doAutoSomething(){

   }

}

(2)配置spring quarter.

<!--注入ben-->
<bean id="autoJob" class="com.test.job.AutoJob">

</bean>

<!--配置job詳情及方法 -->
<bean id="autoJobDetail"  class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject">
            <ref bean="autoJob"/>
        </property>
        <property name="targetMethod">
            <value>doAutoSomething</value>
        </property>
</bean>

<!-- 配置job Trigger跑批時間-->
<bean id="autoTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
      <property name="jobDetail">
        <ref bean="autoJobDetail"/>
      </property>
      <property name="cronExpression">
          <value>0 10 5 * * ?</value>
      </property>
    </bean>

<!-- 引入要批量跑批的job-->

<bean id="myquartz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
      <property name="triggers">
        <list>
          <ref local="autoTrigger"/>

        </list>
      </property>
    </bean>

【二】Spring quarter設置方法二

(1)新建一個要跑批的類

public class TestSpringJob implements Job{

 @Override

  public void execute(JobExecutionContext context) throws JobExecutionException{

  }

}

(2)配置jobdetail

   <bean id="testSpringJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        <property name="jobClass" value="com.test.TestSpringJob"></property>
    </bean>

(3)配置job觸發(fā)器

<bean id="testSpringJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="testSpringJobDetail" />
        <property name="cronExpression" value="0 10 5 * * ?" />
    </bean>

(4)加入調度器中

 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="testSpringJobTrigger" />  
            </list>
        </property>
    </bean>

【三】Spring quarter設置方法三

(1)新建一個父類

public abstract class ParentClassJob extends JobDetailFactoryBean implements Job,InitializingBean{

  public ParentClassJob(){

        this.setJobClass(this.getClass());
  }

}

(2)新建一個要跑批的類

@Component("subClassJob")

public class subClassJob extends ParentClassJob{

  public void execute(JobExecutionContext context){

 }

}

(3)配置觸發(fā)器

    <bean id="subClassTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="subClassJob" />
        <property name="cronExpression" value="0 10 5 * * ?" />
    </bean>

(4)加載觸發(fā)器到調度器中

 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <!--
                <ref bean="subClassTrigger" />  
            </list>
        </property>
    </bean>

【四】Spring 監(jiān)聽類名

public class MyTrigger {

    /**
     * 名稱
     */
    private String triggerName;
    /**
     * 啟動時間
     */
    private Date startTime;
    /**
     * 最后一次執(zhí)行時間
     */
    private Date lastFireTime;
    /**
     * 下一次執(zhí)行時間
     */
    private Date nextFireTime;

    /**
     * 狀態(tài)
     */
    private int state;

    /**
     * 時間配置表達式
     */
    private String  cronExpression;

    public String getCronExpression() {
        return cronExpression;
    }

    public void setCronExpression(String cronExpression) {
        this.cronExpression = cronExpression;
    }

    public String getTriggerName() {
        return triggerName;
    }

    public void setTriggerName(String triggerName) {
        this.triggerName = triggerName;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getLastFireTime() {
        return lastFireTime;
    }

    public void setLastFireTime(Date lastFireTime) {
        this.lastFireTime = lastFireTime;
    }

    public Date getNextFireTime() {
        return nextFireTime;
    }

    public void setNextFireTime(Date nextFireTime) {
        this.nextFireTime = nextFireTime;
    }

    public int getState() {
        return state;
    }

    public String getStateDetail() {
        String rst = null;
        switch (this.state) {
        case 0:
            rst = "正常";
            break;
        case 1:
            rst = "暫停中";
            break;
        case 2:
            rst = "執(zhí)行中";
            break;
        case 3:
            rst = "異常";
            break;
        case 4:
            rst = "阻塞中";
            break;

        default:
            rst = "未知" + this.state;
            break;
        }

        return rst;
    }

    public void setState(int state) {
        this.state = state;
    }

(5)獲取監(jiān)聽相關信息

public List<MyTrigger> getTriggerList() throws Exception {

        List<MyTrigger> result = new ArrayList<MyTrigger>();
        Scheduler scheduler = this.schedulerFactoryBean.getScheduler();
        for (String triggerGroupName : scheduler.getTriggerGroupNames()) {

            for (String triggerName : scheduler.getTriggerNames(triggerGroupName)) {
                Trigger trigger = scheduler.getTrigger(triggerName, triggerGroupName);
                MyTrigger myTrigger = newMyTrigger();
                if(trigger instanceof CronTriggerBean){
                    CronTriggerBean ctb = (CronTriggerBean)trigger;
                    myTrigger.setCronExpression(ctb.getCronExpression());
                }
                myTrigger.setTriggerName(trigger.getName());
                myTrigger.setLastFireTime(trigger.getPreviousFireTime());
                myTrigger.setNextFireTime(trigger.getNextFireTime());
                myTrigger.setStartTime(trigger.getStartTime());
                myTrigger.setState(scheduler.getTriggerState(triggerName, triggerGroupName));
                                result.add(myTrigger);
            }
        }

        return result;
    }

    public void pauseTrigger(String triggerName) throws Exception {
        Scheduler scheduler = this.schedulerFactoryBean.getScheduler();
        scheduler.pauseTrigger(triggerName, null);
    }
    public void resumeTrigger(String triggerName) throws Exception {
        Scheduler scheduler = this.schedulerFactoryBean.getScheduler();
        scheduler.resumeTrigger(triggerName, null);
    }

    public void runTrigger(String triggerName) throws Exception {
        Scheduler scheduler = this.schedulerFactoryBean.getScheduler();
        String jobName = scheduler.getTrigger(triggerName, null).getJobName();
        scheduler.triggerJob(jobName, null);
    }
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市房交,隨后出現(xiàn)的幾起案子彻舰,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刃唤,死亡現(xiàn)場離奇詭異隔心,居然都是意外死亡,警方通過查閱死者的電腦和手機尚胞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門硬霍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人笼裳,你說我怎么就攤上這事须尚。” “怎么了侍咱?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵耐床,是天一觀的道長。 經常有香客問我楔脯,道長撩轰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任昧廷,我火速辦了婚禮,結果婚禮上木柬,老公的妹妹穿的比我還像新娘。我一直安慰自己恶复,他們只是感情好速挑,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布姥宝。 她就那樣靜靜地躺著,像睡著了一般套么。 火紅的嫁衣襯著肌膚如雪碳蛋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天疮蹦,我揣著相機與錄音诸迟,去河邊找鬼阵苇。 笑死,一個胖子當著我的面吹牛紊册,可吹牛的內容都是我干的快耿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼撞反,長吁一口氣:“原來是場噩夢啊……” “哼搪花!你這毒婦竟也來了?” 一聲冷哼從身側響起吮便,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤幢踏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后僚匆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惨驶,經...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡粗卜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年续扔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纱昧。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡识脆,死狀恐怖,靈堂內的尸體忽然破棺而出灼捂,到底是詐尸還是另有隱情,我是刑警寧澤宫蛆,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布耀盗,位于F島的核電站,受9級特大地震影響叛拷,放射性物質發(fā)生泄漏岂却。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一煌恢、第九天 我趴在偏房一處隱蔽的房頂上張望震庭。 院中可真熱鬧,春花似錦二汛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽醋界。三九已至,卻和暖如春形纺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜗字。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挪捕,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓楼吃,卻偏偏與公主長得像妄讯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子躬窜,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內容