@Component public class NotifyUserLoginDemoTask implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar registrar) { Runnable runnable = this::notifyLoginUser; Trigger trigger = new Trigger() { @Override public Date nextExecutionTime(TriggerContext triggerContext) { if (config.getCron() != null) { return new CronTrigger(config.getCron()).nextExecutionTime(triggerContext); } else if (config.getDelay() != null) { var t = new PeriodicTrigger(config.getDelay(), TimeUnit.MILLISECONDS); t.setFixedRate(false); return t.nextExecutionTime(triggerContext); } else if (config.getRate() != null) { var t = new PeriodicTrigger(config.getRate(), TimeUnit.MILLISECONDS); t.setFixedRate(true); return t.nextExecutionTime(triggerContext); } else { throw new RuntimeException("Please define parameters for scheduled task."); } } }; registrar.addTriggerTask(runnable, trigger); } // 其餘略過 }