Как записать, когда Spring Scheduler запустится

Я использую выражение cron для планировщика Spring, и значение выражения динамически предоставляется компонентом Spring с использованием spel.

@Autowired
 private PurgeProperties purgeProperties;

@Scheduled(cron = "#{@purgeProperties.cronExpression}", zone = "#{@purgeProperties.zone}")
public void purgeData() throws UnknownHostException
{
           startPurge();
}

Все работает правильно, единственное, что я хочу регистрировать, когда планировщик сработает, потому что выражение cron предоставляется другим компонентом во время выполнения. Поэтому просто хочу знать, правильное ли выражение сопоставляется с тем, что было предоставлено через файл, в bean-компонент свойства.


person pvjhs    schedule 08.04.2018    source источник
comment
поэтому войдите в метод purgeData и запишите выражение, в чем проблема?   -  person surya    schedule 08.04.2018
comment
stackoverflow.com/a/10938322/3003337   -  person surya    schedule 08.04.2018
comment
plumbr.io/blog/monitoring/monitoring-scheduled-jobs   -  person surya    schedule 08.04.2018
comment
я не хочу входить в систему purgeData, так как она будет зарегистрирована при запуске. Я хочу зарегистрировать планировщик времени (местный часовой пояс на основе предоставленного cron) во время запуска веб-приложения. что-то вроде @postConstruct   -  person pvjhs    schedule 08.04.2018


Ответы (1)


Попробуйте следующий код

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.support.CronSequenceGenerator;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.Date;

''''
''''
@PostConstruct
public void init() {
    CronSequenceGenerator cronTrigger = new CronSequenceGenerator(purgeProperties.cronExpression);
    Date next = cronTrigger.next(new Date());

    System.out.println("Next Execution Time: " + next);
}
person surya    schedule 09.04.2018