Предположим, у нас есть контроллер покоя пружины, который выполняет длительную операцию:
@PostMapping(path = "someLongOperation")
public ResponseEntity<?> doOp(@RequestBody MyBody) {
...do A
...do B //client cancels request while execution is at this step
...do some calculations
...save result to database
return ResponseEntity.ok("my response body")
}
И на этапе B клиент отменяет запрос, например Нажав «Отмена» на Почтальоне, закрыв веб-страницу в браузере, продолжит ли наш метод выполнять и записывать результаты в базу данных?
И отличаются ли асинхронные методы в этом отношении?
@PostMapping(path = "someLongOperation")
public Callable<ResponseEntity<?>> doOp(@RequestBody MyBody) {
return () -> {
...do A
...do B //client cancels request while execution is at this step
...do some calculations
...save result to database
return ResponseEntity.ok("my response body")
}
}