Spring REST:为特殊返回值创建自定义响应

时间:2017-03-30 15:39:56

标签: spring-mvc spring-restcontroller spring-rest

我想添加一个横切策略,将某些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的东西来实现吗?

1 个答案:

答案 0 :(得分:0)

看起来答案是实现org.springframework.web.method.support.HandlerMethodReturnValueHandler