Как создать несколько экземпляров класса планировщика при весенней загрузке? - PullRequest
0 голосов
/ 10 января 2019

У меня есть класс, содержащий аннотированный метод @Scheduled. Я хочу создать несколько экземпляров класса в приложении весенней загрузки, чтобы иметь возможность запускать несколько заданий за указанный период времени.

Я гуглил и пытался создать новый объект, но планирование не сработало.

Примечание: я передам, что выполнить во время выполнения для соответствующего экземпляра.

Ответы [ 3 ]

0 голосов
/ 10 января 2019

@ Scheduled является повторяемой аннотацией, поэтому вы можете добавить несколько @Scheduled одним и тем же способом:

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

@ Повторяется (значение = Schedules.class)

См. Также Дублирование в @ Scheduled

Повторение аннотаций как @Scheduled допускает несколько аннотаций

0 голосов
/ 13 января 2019

Вот ответ, Я реализовал 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 планировщика будут работать независимо.

0 голосов
/ 10 января 2019

Вы можете создать класс с несколькими методами, чтобы одновременно планировать свои работы, выполняя одну и ту же работу.

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

    }
}
...