Я хотел бы добавить сквозную стратегию, которая преобразует определенные возвращаемые типы методов Spring @RestController
в другой объект ответа.
Учитывая, что у меня есть интерфейс
interface AsyncResult<T> {
public CompletableFuture<T> getResult();
}
я хотел бы написать
@RequestMapping(...)
public AsyncResult getAsyncResult() { return ... }
и создать фактический ответ в какой-то стратегии, например.
public ResponseEntity convert(AsyncResult result) {
if(result.getResult().isDone()) {
return new ResponseEntity(result.get(), HttpStatus.OK);
} else {
// headers e.g. AsyncResult: true, Poll-Location: /result/result-id
return new ResponseEntity(HttpStatus.ACCEPT, headers);
}
}
Я предполагаю, что это возможно, зарегистрировав что-то похожее на @ExceptionHandler
?