如何在Spring Boot中创建调度程序类的多个实例?

时间:2019-01-10 13:54:50

标签: spring-boot scheduling spring-scheduled

我有一个包含@Scheduled注释方法的类。 我想在Spring Boot应用程序中创建一个类的多个实例,以便应该能够在指定的时间段内运行多个作业。

我已经用Google搜索并尝试创建一个新对象,但是调度却没有用。

注意:我将传递在运行时为各个实例执行的操作。

3 个答案:

答案 0 :(得分:0)

您可以使用多种方法创建一个类,以同时安排您的工作,执行相同的工作。

@Component
public class Job {

    @Scheduled(initialDelay = 1000, fixedDelay = 60000)
    public void job1() {
        jobWork();
    }

    @Scheduled(initialDelay = 1000, fixedDelay = 60000)
    public void job2() {
        jobWork();
    }

    private void jobWork() {

    }
}

答案 1 :(得分:0)

@Scheduled是可重复的注释,因此您可以通过相同的方法添加多个@Scheduled

@Scheduled(initialDelay = 1000, fixedDelay = 60000)   
@Scheduled(initialDelay = 1000, fixedDelay = 60000)
public void jobWork() {
    jobWork();
}
  

@Repeatable(value = Schedules.class)

另请参阅Duplication on @Scheduled

  

以@Scheduled重复注释,允许多个注释

答案 2 :(得分:0)

这是答案,  我实施了ApplicationContextAware

@Override
public void setApplicationContext(ApplicationContext applicationContext)
        throws BeansException {
    for (int i =0;i<4;i++) {
    ((ConfigurableApplicationContext) applicationContext).getBeanFactory()
        .registerSingleton("New Instance " + i, new SchedularJob());
    }
}

它将创建4个SchedularJob类的实例,并且4个调度程序将独立运行。