天天看點

JobDataMap傳遞參數_02

JobDataMap屬于JobDetail的一部分

可以在建構JobDataMap時傳遞參數

取出參數2種形式:

第1種:可以從execute方法的上下文中取出參數

第2種:在Job類中,定義參數名稱,完成getset方法

推薦使用第2種+lombok

添加參數

//建立JobDetail
        JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
                //唯一辨別
                .withIdentity("jobDetail1", "group1")
                //添加參數通過usingJobData方法,傳遞給job
                .usingJobData("name","yx")
                .build();      

第1種:可以從execute方法的上下文中取出參數

package com.gblfy.job;

import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import java.time.LocalTime;

public class MyJob implements Job {

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {

        LocalTime localTime = LocalTime.now();
        /*
          1.從上下文中先擷取getJobDetail
          2.再從getJobDetail中擷取JobDataMap
          3.最後,從JobDataMap中,根據key擷取對應屬性的值
         */
        JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
        String name = jobDataMap.getString("name");

        System.out.println("hello " + name + "我正在執行" + localTime);
    }
}      
JobDataMap傳遞參數_02

第2種:在Job類中,定義參數名稱,完成getset方法

package com.gblfy.job;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import java.time.LocalTime;

public class MyJob implements Job {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        LocalTime localTime = LocalTime.now();
        System.out.println("hello " + name + "我正在執行" + localTime);
    }
}      
JobDataMap傳遞參數_02

為了減少代碼,建議引入lombok

</dependency>
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.18.12</version>
      </dependency>      

剛才的代碼,簡化為

package com.gblfy.job;

import lombok.Getter;
import lombok.Setter;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.time.LocalTime;

public class MyJob implements Job {

    @Getter@Setter
    private String name;

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        LocalTime localTime = LocalTime.now();
        System.out.println("hello " + name + "我正在執行" + localTime);
    }
}      
JobDataMap傳遞參數_02