SpringBoot: управлять асинхронным поведением из @RequestMapping, аналогичным AsyncWebServlet? - PullRequest
0 голосов
/ 22 февраля 2019

Я работаю с Spring Boot 2 и хотел бы, чтобы мои запросы обрабатывались асинхронно.

В Java EE можно использовать асинхронную обработку для асинхронных сервлетов, как в этой ссылке .Ниже приведен связанный пример:

@WebServlet(urlPatterns={"/asyncservlet"}, asyncSupported=true)
public class AsyncServlet extends HttpServlet { ... }

, и вышеизложенное позволяет использовать AsyncContext.

Но в Spring Boot у меня есть следующее @RequestMapping.Как мне сделать так, чтобы он обрабатывал запросы в асинхронном режиме, а также поддерживал AsyncContext?Как использовать асинхронный веб-сервлет?

@RestController
public class myRestController {
   @RequestMapping("{resource}/**")
   public void resourceRequest (@PathVariable("resource") String resource) {
       // example:
       // ... some long running calls such as database communication
       // ... convert request through  AsyncContext ctx = req.startAsync();
       // etc
   }

}

Обратите внимание, что возвращение void является намеренным.

Я нашел следующий SO-ответ Как зарегистрировать сервлет с включенным «async-support» в Spring-Boot? , сказав, что «Spring Boot будет автоматически регистрировать любые bean-объекты Servlet в контексте приложения с контейнером сервлета. По умолчанию для поддерживаемой асинхронности установлено значение trueтак что вам нечего делать, кроме создания бина для вашего сервлета. "но я не использую аннотации @WebServlet в моей программе, только аннотацию @RestController.Итак, как мне получить выгоду от опции asyncSupported?

...