Я запускаю spring
веб-приложение (не spring boot
). При запуске приложение запрашивает набор данных с другого сервера. Этот набор данных занимает около минуты для обработки. Когда я развертываю это приложение на коте, это занимает минуту. Сам веб-сайт не будет доступен, пока запрос набора данных не будет полностью обработан. Но на самом деле я хотел бы видеть, что пользователи уже могут войти в систему, и набор данных обрабатывается без остановки работы остальной части приложения.
В настоящее время у меня есть класс обслуживания и я использую аннотацию @PostConstruct
. .
@Service
public class StartupService {
@PostConstruct
public void load() {
//perform the dataset request
...
}
}
Я нашел здесь похожую статью о stackoverflow, в которой предлагалось попробовать ApplicationListener. Но это имеет тот же эффект. HTTP-запросы на веб-сайт не отвечают, если запрос набора данных не завершен.
@Service
public class StartupService implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(final ContextRefreshedEvent event) {
//perform the dataset request
...
}
}
Конечно, можно было бы начать новый Thread
, но я хотел бы знать, какой подход лучшедля этой проблемы будет.