Вы можете реализовать его без @Scheduled
аннотации:
@Component
public class TaskSchedulerComponent {
@Autowired
private ThreadPoolTaskScheduler taskScheduler;
public void schedulePeriodicTask(Runnable task, long delay, long period){
PeriodicTrigger periodicTrigger
= new PeriodicTrigger(period, TimeUnit.MICROSECONDS);
periodicTrigger.setFixedRate(true);
periodicTrigger.setInitialDelay(delay);
taskScheduler.schedule(task,periodicTrigger);
}
}
Затем в вашем методе main
вы регистрируете все задачи, которые должны выполняться периодически, с заданной задержкой и периодом времени.
Примечание. Чтобы @Scheduled
использовал параметры, вы можете использовать значения из файла свойств, например:
@Scheduled(fixedDelayString = "${fixed.delay}",initialDelay = ${init.delay})