使用quartz时,传入参数到job中的使用记录
作者:不喜欢吃猫的鱼
这篇文章主要介绍了使用quartz时,传入参数到job中的使用记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
在使用quartz的时候不免会遇到需要在触发定时任务的时候需要传入对应参数进去
刚好遇到这个问题,随手记录下:
例子
在调用的时候直接传入map类型的参数(此处是封装了,故可以直接调用)
@PostConstruct public void test(){ try { Map param = new HashMap(); param.put("token","ssssssssss"); QuartzUtil.saveJob("test",TestJob.class,10,false,param); } catch (SchedulerException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } }
具体实现
(在获取到jobDeatil实例后通过获取到JobDataMap再去赋值参数即可),代码如下
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, JOB_GROUP_NAME).build(); //设置参数 jobDetail.getJobDataMap().put("data",param);
在具体的job类里去获取参数
例子:
@Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); System.out.println("现在是:"+sdf.format(new Date())); //获取传入的参数数据 JobDataMap data = jobExecutionContext.getJobDetail().getJobDataMap(); System.out.println(data.get("data")); }
总结
记录下,以免忘记。。。。
好了,以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。