#java #spring #spring-boot
Вопрос:
У меня есть недолговечный процесс для чтения простого файла из пути к классу в память, я решил ApplicationListener<ApplicationReadyEvent>
позволить spring запустить задачу:
@Component
@Priority(1)
class MyLoader implements ApplicationListener<ApplicationReadyEvent> {
@Override
public void onApplicationEvent(ApplicationReadyEvent event) {
doStuff();
}
}
Я понял, что не так уж мало HTTP-запросов, которые я предлагаю в этом приложении, зависят от этих данных в памяти. Как я могу принудительно MyLoader
выполнить класс до того, как веб-сервер будет готов выполнить запрос? Я понятия не имею, как определить эту зависимость?
Ответ №1:
Вы должны прослушать событие до ApplicationReadyEvent
, потому что оно является последним, отмечая, что приложение готово к обслуживанию запросов.
Например, вы можете слушать ApplicationStartingEvent
. Смотрите список доступных событий приложений здесь.
Комментарии:
1. Есть ли какой-либо способ четко установить эту зависимость, я даже не могу найти никакой информации о том, какое событие запускается после запуска контейнера сервлета.