使用quartz時,傳入引數到job中使用記錄
阿新 • • 發佈:2018-12-10
在使用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")); }
記錄下,以免忘記。。。。