如何在运行时安排特定时间执行方法

How to schedule executing method for certain time during runtime

假设我有一些休息 api 其中参数是执行方法的时间,第二个参数是 class 中方法的名称。在 spring-boot 应用程序中的特定时间(仅一次)调用此方法的最佳方式是什么?

首先,在您的 spring-boot 应用程序中启用调度:

@SpringBootApplication
@EnableScheduling
public class Application {
// ...

然后,注入 TaskScheduler bean 并在每次用户调用 REST 方法时以编程方式安排任务:

public class MyScheduler {

    @Autowired
    private TaskScheduler scheduler;

    public void scheduleNewCall(Date dateTime) {
        scheduler.schedule(this::scheduledMethod, dateTime);
    }

    public void scheduledMethod() {
    // method that you wish to run
    }

}

但是,您还应该考虑限制对此方法的调用量,否则恶意用户可能会安排大量任务并溢出任务池。