Задать вопрос
Ответы пользователя по тегу Spring
  • Как работает асинхронность в Spring MVC?

    @shushara4241
    Добрый вечер!
    В контроллерах getDefer1, 2, 3 вы блокируете поток томкета, правильнее будет переделать на какой-нибудь вариант типо такого:
    @GetMapping("/defer")	
    DeferredResult<String> getDefer() {
        DeferredResult<String> result = new DeferredResult<>();
        CompletableFuture.runAsync(() -> {
            try {
                Thread.sleep(30000);
                result.setResult("defer");
            } catch (InterruptedException e) {
                result.setErrorResult("Timeout");
            }
        }, mvcTaskExecutor());
        return result;
    }

    Так должно работать так как вы хотите. С async не работает, потому что спринг не умеет перехватывать вызовы @Async внутри одного класса, нужно чтобы обязательно был другой бин
    Ответ написан
    Комментировать