Cronjob spring boot on startup
У меня стоит задача написать cronjob, которая будет при запуске приложения загружать данные из ДБ, я нашла такую информацию "@reboot: Schedule the method for every reboot of the application" но такая запись не работает @Scheduled(cron = "@reboot"), как правильно указать cron?
Ответы (2 шт):
@reboot - нестандартное выражение поддерживаемое crontab, которое обозначает время (ре)старта системы, а не время запуска Вашего приложения.
Как уже писали в комментах, cron не поддерживает события запуска приложения итд.
Очевидно в ТЗ cronjob используется не в техническом смысле, а в более широком, подразумевая асинхронную операцию привязанную к определенному событию (это конечно желательно уточнить)
Если так, то можно использовать все возможные способы, например
- https://stackoverflow.com/questions/27405713/running-code-after-spring-boot-starts
- https://www.baeldung.com/running-setup-logic-on-startup-in-spring
Если все же необходимо использовать cron, тогда можно задать период - например в полночь @Scheduled(cron = "0 0 0 * * ?") - а в коде уже проверять и игнорировать повторные вызовы.