Как еще один вариант, теперь можно использовать возможности планирования Spring. В Spring 3 или выше он имеет аннотацию, похожую на cron, которая позволяет планировать выполнение задач с помощью простой аннотации метода. Это также дружит с автопроводкой.
В этом примере запланировано задание на каждые 2 минуты с начальным ожиданием (при запуске) 30 секунд. Следующая задача будет запущена через 2 минуты после завершения метода! Если вы хотите, чтобы он запускался каждые 2 минуты, используйте вместо него fixedInterval.
@Service
public class Cron {
private static Logger log = LoggerFactory.getLogger(Cron.class);
@Autowired
private PageService pageService;
@Scheduled(initialDelay = 30000, fixedDelay=120000) // 2 minutes
public void cacheRefresh() {
log.info("Running cache invalidation task");
try {
pageService.evict();
} catch (Exception e) {
log.error("cacheRefresh failed: " + e.getMessage());
}
}
}
Обязательно добавьте также @EnableAsync
@EnableScheduling для вашего класса Application, чтобы включить эту функцию.