Quartz 调度框架怎么调用一个需要传入参数的类
时间: 2024-05-15 07:20:00 浏览: 8
Quartz 调度框架可以通过 JobDataMap 来传递参数给需要调用的类。
具体步骤如下:
1. 创建一个需要调用的类,实现 org.quartz.Job 接口并重写 execute 方法,例如:
```
public class MyJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
String parameter1 = dataMap.getString("parameter1");
int parameter2 = dataMap.getInt("parameter2");
// 此处可以使用参数 parameter1 和 parameter2 做一些操作
}
}
```
2. 创建 JobDataMap 对象,将需要传递的参数放入其中,例如:
```
JobDataMap dataMap = new JobDataMap();
dataMap.put("parameter1", "hello");
dataMap.put("parameter2", 123);
```
3. 创建 JobDetail 对象并将需要调用的类和 JobDataMap 对象传入其中,例如:
```
JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
.withIdentity("myJob", "group1")
.usingJobData(dataMap)
.build();
```
4. 将 JobDetail 对象和触发器对象一起提交给调度器,例如:
```
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()
.build();
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
```
5. 当触发器触发时,Quartz 调度框架会调用 MyJob 类的 execute 方法,并将 JobDataMap 中的参数传递给该方法。在 execute 方法中可以通过 JobDataMap 对象获取参数并进行相应的操作。