Я работаю с 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
?