Для простых запланированных задач в Spring / spring-boot нет встроенного элемента управления CLI.
Вам нужно будет реализовать его самостоятельно.
Ниже приведен простой пример того, как вы можете управлять запланированными задачами и представлять методы запуска / остановки в командной строке с помощью Spring Shell.
Давайте рассмотрим, у вас есть общий интерфейс для всех запланированныхtasks:
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.