我尝试使用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();
}
Scheduled注释有多个选项,例如fixedDelay,fixedRate,initialDelay,cron ......但这些选项都不能接受Date。 那么,我如何动态地在指定的日期执行我的方法(即取决于Date insered)?
Ps:如果用户输入两个或更多日期,该方法可以多次执行..
答案 0 :(得分:1)
Spring有你可以使用的TaskScheduler抽象:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html#scheduling-task-scheduler
它有一种方法可以在某个Runnable
安排Date
的执行:
ScheduledFuture schedule(Runnable task, Date startTime);
可能有点偏离主题:如果JobController
是Spring Controller
(或RestController
),我不会将其自动装入JobScheduler
。我会反过来并将JobScheduler
注入JobController
。