2017-01-17 2 views
0

У меня вопрос о том, как правильно использовать заметку Scheduled Spring. В основном я хочу сделать следующее: У меня есть веб-приложение и план по обновлению карты каждые 30 минут с последними \ свежими данными, а затем сохранение в кеш. Я использую Spring уже для своего веб-сайта, поэтому я решил, что эта аннотация будет хорошей возможностью для использования, и это будет легко, но я немного запутался, как правильно назначить этот запланированный метод. Я понимаю, что создание шага создания интерфейса \ Сервис и использование этого, но после того, как вы все закончили выполнение своей задачи за кадром, как эта обновленная информация возвращается в представление? В этом смысле мое приложение обновит карту ...Использование Spring Scheduled Annotation and Update View

Я использовал обычные задачи Async раньше в Java и с каркасом Android, где данные обрабатываются в другом потоке, затем доступен \ или возвращается во внутреннем методе но я изо всех сил пытаюсь найти способ автоматического запуска моего метода, а также вернуть данные в представление. Я прочитал документацию Spring и посмотрел на различные учебники, но я пропустил некоторые отключения. Почти все примеры, использующие аннотацию по расписанию после печати на консоль, относятся к моему центральному вопросу. Как получить данные из этой функции автоматического запуска обратно в мой просмотр? Ниже приведен очень ограниченный код, который у меня есть.

Любая помощь будет очень признательна в объяснении того, как это работает. Я чувствую, как только «получаю это» или понимаю, как это сделать, на самом деле это будет совсем не сложно. Просто с трудом обертываю вокруг себя голову.

public class CallDBSteps { 

    @Scheduled(cron="*/2 * * * * MON-FRI") 
    public void updateMapItems(){ 
     System.out.println("Started cron job"); 
     /** 
     * Call method 1 
     * Call method 2 
     * Call method 3 
     * Return how? return to view, what? 
     */ 

    } 
} 
+1

Как получить информацию о 'public static' datastructure/variable, которая может быть обновлена' updateMapItems' и прочитана любыми клиентами. –

+0

Хмммм, я думаю, технически это сработает. Я действительно не думал об этом, и определенно не против. Поэтому в основном я называю методы, которые мне нужны, и как только я закончил, присвойте результат статической переменной. Как только это произойдет, я предполагаю, что могу вызвать метод, в котором я мог бы добавить статическую переменную и вернуться к представлению? – Tastybrownies

ответ

1

Для передачи данных от сервера к клиенту с интервалом в 30 мин соединение между браузером и сервером должно быть сохранено (соединение открытым), что не тот случай, когда мы делаем запрос HTTP. Поэтому, чтобы отправить что-либо от сервера к клиенту на определенном интервале, только если оба r связаны, webSocket.io предоставляет решение для этого. Однако в вашем случае я думаю, что опрос (ajax calls) будет соответствовать требованию.

1

Если ваш веб основан на HTTP/1.1, вы можете опрашивать подачу для свежих данных с ajax.Otherwise, обновить Http/1.1 Http/2.0 или веб-гнездо.

Смежные вопросы