本文共 2813 字,大约阅读时间需要 9 分钟。
一、创建JobDetail及Trigger实例
通过JobBuilder创建JobDetail实例,可以使用usingJobData方法传递参数。以下是创建一个带有不同参数类型的JobDetail实例的示例:JobDetail jobDetail = (JobDetail) JobBuilder.newJob(HelloJob.class) .withIdentity("myJob", "groupOne") .usingJobData("message", "这是一条JobDetail") .usingJobData("FloatValue", 30.1415F) .build(); 同理,可以创建一个SimpleTrigger实例,设置相应的触发器配置: ```java SimpleTrigger trigger = TriggerBuilder.newTrigger() .withIdentity("simpleTrigger", "group1") .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(2) .repeatForever()) .startNow() .usingJobData("messages", "这是一条trigger") .usingJobData("DoubleValue", 2.4D) .build(); 二、接收参数
在JobExecution的execute方法中,可以通过JobExecutionContext获取JobDetail和Trigger的相关信息,并从JobDataMap中获取参数值:public void execute(JobExecutionContext context) throws JobExecutionException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("开始打印时间:" + sdf.format(new Date())); System.out.println("Hello world!"); JobDetail jobDetail = context.getJobDetail(); System.out.println("任务组:" + jobDetail.getKey().getGroup()); System.out.println("任务名称:" + jobDetail.getKey().getName()); JobDataMap jobDataMap = context.getJobDetail().getJobDataMap(); System.out.println("message:" + jobDataMap.getString("message")); System.out.println("FloatValue:" + jobDataMap.getFloat("FloatValue")); Trigger trigger = context.getTrigger(); System.out.println("调度组:" + trigger.getKey().getGroup()); System.out.println("调度名称:" + trigger.getKey().getName()); JobDataMap tigDataMap = context.getTrigger().getJobDataMap(); System.out.println("messages:" + tigDataMap.getString("messages")); System.out.println("DoubleValue:" + tigDataMap.getDouble("DoubleValue")); } 三、通过set方法获取参数
除了使用JobDataMap获取参数值,可以通过类中的setter方法将参数赋值到相应的变量中。以下是一个示例:private String message; private String messages; private Float FloatValue; private Double DoubleValue; public void setMessage(String message) { this.message = message; } public void setMessages(String messages) { this.messages = messages; } public void setFloatValue(Float FloatValue) { this.FloatValue = FloatValue; } public void setDoubleValue(Double DoubleValue) { this.DoubleValue = DoubleValue; } public void execute(JobExecutionContext context) throws JobExecutionException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("开始打印时间:" + sdf.format(new Date())); System.out.println("Hello world!"); System.out.println("message:" + message); System.out.println("FloatValue:" + FloatValue); System.out.println("messages:" + messages); System.out.println("DoubleValue:" + DoubleValue); } 转载地址:http://xzxfk.baihongyu.com/