SpringBoot Task定时任务参数详解与应用

scheduledTaskMap = new HashMap<>();

@Resource
private ScheduledTaskRegistrar taskRegistrar;

@Override

public void add(SysTask sysTask) {
    CronTask cronTask = new CronTask(getRunnable(sysTask), sysTask.getTaskCron());
    ScheduledTask scheduledTask = taskRegistrar.scheduleCronTask(cronTask);
    String uuid = UUID.randomUUID().toString();
    scheduledTaskMap.put(uuid, scheduledTask);
    log.info("添加任务成功, uuid == > {}, 任务名称 == > {}, 任务表达式 == > {}", uuid, sysTask.getTaskName(), sysTask.getTaskCron());
}

private Runnable getRunnable(SysTask sysTask) {

    return () -> {
        try {
            Class aClass = Class.forName(sysTask.getClassName());
            Constructor constructor = aClass.getConstructor();
            Object o = constructor.newInstance();
            Method method = aClass.getMethod(sysTask.getMethodName());
            method.invoke(o);
        } catch (Exception e) {
            e.printStackTrace();
        }
    };
}

@Override

public void delete(String uuid) {
    try {
        ScheduledTask scheduledTask = scheduledTaskMap.get(uuid);
        scheduledTask.cancel();
        scheduledTaskMap.remove(uuid);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override

public void update(SysTask sysTask) {
    this.delete(sysTask.getTaskUuid());
    this.add(sysTask);
}

}

```csharp
@RestController
@RequestMapping("/cron")
public class CronController {
@Resource
    private CronService cronService;
@PostMapping("/add")
    public String add(@RequestBody SysTask sysTask) {
        cronService.add(sysTask);
        return "success";
    }
@PostMapping("/delete")
    public String delete(String uuid) {
        cronService.delete(uuid);
        return "success";
    }
@PostMapping("/update")
    public String update(@RequestBody SysTask sysTask) {
        cronService.update(sysTask);
        return "success";
    }
}