Какой смысл возвращать результат Callable в возврате контроллера? - PullRequest
0 голосов
/ 20 марта 2020

Кто-то любит использовать Callable для построения возвращаемого значения контроллера из-за Spring mvc, например:

    @RestController
    public class TController{
         @GetMappint("helloWorld")
         public Callable<String> demo(){
             return new Callable<String>() {
                 @Override
                 public String call() throws Exception {
                     //do sth.
                    return "hello world";
                 }
             };
         }    
    }

Я думаю, что это бесполезно и эквивалентно этому примеру:

 @RestController
    public class TController{
         @GetMappint("helloWorld")
         public String demo(){
             //do sth.
            return "hello world";
         }    
    }

это точно?

1 Ответ

1 голос
/ 20 марта 2020

Нет, в принципе вы ошибаетесь.

Существует вариант использования для возврата Callable<String>. Допустим, служба, которую вы будете вызывать с контроллера, работает в течение длительного времени. В течение этого времени в традиционной модели потока на запрос поток tomcat, предназначенный для соединений с сервером, застревает.

Таким образом, начиная с сервлета 3.0, есть способ выполнять вещи асинхронно, и это способ делать это весной MVC: На самом деле, возвращение вызываемого из метода контроллера инструктирует Spring MVC вызывать задание, определенное в Callable, в другой теме.

Вы можете найти эту статью , относящуюся к вашему запросу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...