Java 如何使用多个cron设置一个时间表,以便使用springboot执行一个任务

Java 如何使用多个cron设置一个时间表,以便使用springboot执行一个任务,java,spring-boot,cron,schedule,Java,Spring Boot,Cron,Schedule,现在,我已经实现了一个SchedulingConfigurer类来实现动态调度任务,如下代码所示 @Component public class DynamicScheduledTask implements SchedulingConfigurer { private static final String DEFAULT_CRON = "* * * * * ?"; private String cron = DEFAULT_CRON; @Override p

现在,我已经实现了一个SchedulingConfigurer类来实现动态调度任务,如下代码所示

@Component
public class DynamicScheduledTask implements SchedulingConfigurer {
    private static final String DEFAULT_CRON = "* * * * * ?";
    private String cron = DEFAULT_CRON;

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
      taskRegistrar.addTriggerTask(new Runnable() {
      @Override
      public void run() {
        //TODO MyTask
      }
    }, new Trigger() {
      @Override
      public Date nextExecutionTime(TriggerContext triggerContext) {
        CronTrigger trigger = new CronTrigger(cron);
        Date nextExecDate = trigger.nextExecutionTime(triggerContext);
        return nextExecDate;
      }
    });
    }

    public void setCron(String cron) {
        this.cron = cron;
    }
}
但是上面的代码只使用一个cron表达式执行一个任务,而我需要使用多个corn表达式设置一个时间表来执行一个任务,我应该怎么做?

创建一个单独的(bean)类来执行cron任务。我的意思是把你在run方法中的任何一段代码放到另一个类中

@Component
public class CronJobTask {

  public void executeCron(){
      System.out.println("Cron triggered");
     //TODO MyTask
  }
}
然后创建两个类,与上面的
DynamicScheduledTask1
DynamicScheduledTask2
类似。在这两个类中,向cronjobstask添加依赖项

@Autowired
  CronJobTask cronJobTask;
从两个类中的run方法调用

cronJobtask.executeCron();  
假设您通过rest调用从用户那里获得时间。因此,在控制器类中,向两个DynamicScheduledTask添加依赖项

@Autowired
DynamicScheduledTask1 dynamicScheduledTask1;
@Autowired
DynamicScheduledTask2 dynamicScheduledTask2;  
所以当你从用户那里得到时间的时候。计算cron时间并执行以下操作

dynamicScheduledTask1.setCron("calculated cron 1");
dynamicScheduledTask2.setCron("calculated cron 2");
创建一个单独的(bean)类来执行cron任务。我的意思是把你在run方法中的任何一段代码放到另一个类中

@Component
public class CronJobTask {

  public void executeCron(){
      System.out.println("Cron triggered");
     //TODO MyTask
  }
}
然后创建两个类,与上面的
DynamicScheduledTask1
DynamicScheduledTask2
类似。在这两个类中,向cronjobstask添加依赖项

@Autowired
  CronJobTask cronJobTask;
从两个类中的run方法调用

cronJobtask.executeCron();  
假设您通过rest调用从用户那里获得时间。因此,在控制器类中,向两个DynamicScheduledTask添加依赖项

@Autowired
DynamicScheduledTask1 dynamicScheduledTask1;
@Autowired
DynamicScheduledTask2 dynamicScheduledTask2;  
所以当你从用户那里得到时间的时候。计算cron时间并执行以下操作

dynamicScheduledTask1.setCron("calculated cron 1");
dynamicScheduledTask2.setCron("calculated cron 2");

您好,您为什么不使用@Scheduled()?因为我需要在服务器运行时设置一个时间来调度任务。1。您是否已使用@EnableScheduling批注启用计划。2.如果应用程序未运行,则计划的任务无论如何都不会运行。所以对于您的用例,您可以使用@Scheduled(cron=“****?”)来安排任务。是的,我已经做了您之前所说的。我可以理解您的意思,但我需要设置一个时间,即用户请求从网站到运行时安排的时间,而@Scheduled(cron=“****?”)是接受固定时间(固定cron表达式).因此,我将代码作为我的问题,它正在工作,但现在我有一个问题,我的代码只接受一个corn表达式,我想要的是,您有什么解决方案吗?两个cron表达式是否都来自用户?或者一个cron来自用户,而您正在基于此计算另一个cron?您好,您为什么不使用@Scheduled()?因为我需要设置一个时间,以便在服务器运行时安排任务。1。您是否已使用@EnableScheduling批注启用计划。2.如果应用程序未运行,则计划的任务无论如何都不会运行。所以对于您的用例,您可以使用@Scheduled(cron=“****?”)来安排任务。是的,我已经做了您之前所说的。我可以理解您的意思,但我需要设置一个时间,即用户请求从网站到运行时安排的时间,而@Scheduled(cron=“****?”)是接受固定时间(固定cron表达式).因此,我将代码作为我的问题,它正在工作,但现在我有一个问题,我的代码只接受一个corn表达式,我想要的是,您有什么解决方案吗?两个cron表达式是否都来自用户?或者一个cron来自用户,而您正基于此计算另一个cron?谢谢你,我终于得到了我想要的。谢谢你,我终于得到了我想要的。