对于简单的计划任务,spring/spring-boot 中没有开箱即用的 CLI 控件。
您将需要自己实现它。
下面是一个简单的示例,说明如何使用 spring shell 控制计划任务并将启动/停止方法公开给命令行。
假设您有一个用于所有计划任务的通用接口:
public interface WithCliControl {
    void start();
    void stop();
}
所以一个简单的计划任务将如下所示:
@Component
public class MyScheduledTask implements WithCliControl {
    private AtomicBoolean enabled = new AtomicBoolean(true);
    @Scheduled(fixedRate = 5000L)
    public void doJob() {
        if (enabled.get()) {
            System.out.println("job is enabled");
            //do your thing
        }
    }
    @Override
    public void start() {
        enabled.set(true);
    }
    @Override
    public void stop() {
        enabled.set(false);
    }
}
相应的 CLI 组件将如下所示:
@ShellComponent
public class MyScheduledTaskCommands {
    private final MyScheduledTask myScheduledTask;
    public MyScheduledTaskCommands(final MyScheduledTask myScheduledTask) {
        this.myScheduledTask = myScheduledTask;
    }
    @ShellMethod("start task")
    public void start() {
        myScheduledTask.start();
    }
    @ShellMethod("stop task")
    public void stop() {
        myScheduledTask.stop();
    }
}
@ShellComponent并将@ShellMethod这些方法暴露给 Spring Shell 进程。