我正在尝试使用 Spring Boot 管理计划任务。我只想在特定日期(由用户指定)执行我的作业一次。 这是我的工作:
@Component
public class JobScheduler{
@Autowired
JobController controller;
// Retrieving the Date entered by the user
controller.getDateForExecution(); // 2016/05/24 10:00 for example
@Scheduled(???)
public void performJob() throws Exception {
controller.doSomething();
}
计划注释有多个选项,例如fixedDelay、fixedRate、initialDelay、cron ...,但这些选项都不能接受日期。 那么,我如何在指定的日期动态执行我的方法(即取决于插入的日期)?
Ps:如果用户输入两个或多个日期,该方法可以执行多次..
最佳答案
Spring 具有您可以使用的 TaskScheduler 抽象:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html#scheduling-task-scheduler
它有一个方法可以安排在某个日期
执行Runnable
:
ScheduledFuture schedule(Runnable task, Date startTime);
可能有点题外话:如果 JobController
是 Spring Controller
(或 RestController
),我不会将它 Autowiring 到 JobScheduler
。我会将其反转并将 JobScheduler
注入(inject)到 JobController
中。
关于java - Spring 启动: execute a job at a particular Date entered by the user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37394605/