java - Spring 启动: execute a job at a particular Date entered by the user

标签 java spring-boot scheduling

我正在尝试使用 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/

相关文章:

java - 一个数组中的所有数字都 <= 另一个数组

java - 如何将 24 小时时间字符串转换为标准 java 日期,反之亦然?

java - 使用 JAVA 从命令行运行 Symantec End Point DoScan.exe

spring-boot - FeignClient : Serialize RequestParam to JSON

php - php上的休眠功能

java - 最小的 API 与便利

mongodb - org.springframework.beans.factory.UnsatisfiedDependencyException:

spring-boot - 如何在 Java 中将字节数组上传到 S3 存储桶?

linux - linux调度进程还是线程?

android - SQLite 子查询不工作