有时候,我们需要往job的 execute()方法中传递参数,那么如果实现呢?

传入参数

quartz 中用 jobDataMap 去存储附加信息。

jobDataMap类,每个JobDetail都关联了一个JobDataMap实例,JobDataMap是java.util.Map的子类,基本上是提供key- value形式的数据,当你创建JobDetail的时候,可以把附加信息放到JobDataMap中,那么在execute方法中可以根据key找到需 要的值。

有两种方式将数据添加到jobDataMap中:

  • JobBuilder构建JobDetail过程中添加
    通过usingJobData(“key”, “value”)
    JobBuilder.newJob(jobClass)
              .withIdentity("jobname", "groupname")
              .usingJobData("key", "value")  //参入参数
              .build();
    
  • JobDetail追加方式
JobDetail job = new JobDetail…
job.getJobDataMap().put(“key”,”value”);

获取参数

public class SwithFileJob implements Job {

  @Override
  public void execute(JobExecutionContext context) throws JobExecutionException {
    FileManager fileManager = (FileManager) context.getJobDetail().getJobDataMap()
                     .get("key");  //key值与put值保持一致

更多推荐