如何在 spring 引导中创建调度程序 class 的多个实例?

How to create multiple instances of a scheduler class in spring boot?

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

我已经用谷歌搜索并尝试创建一个新对象,但计划没有成功。

注意:我将在运行时间为相应的实例传递要执行的内容。

您可以使用多种方法创建一个 class 来同时安排您的工作,做同样的工作..

@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() {

    }
}

@Scheduled 是一个可重复的注释,因此您可以在同一方法中添加多个 @Scheduled

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

@Repeatable(value=Schedules.class)

另见 Duplication on @Scheduled

Repeating Annotations as @Scheduled allow multiple annotations

这是答案, 我实现了 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 实例 class 和 4 个调度程序 运行 独立。