想象一下这个简单的控制器方法:
public ResponseEntity<?> findById(@Parameter(description = "id") @PathVariable String id) {
Optional<Model> model = repository.findById(id);
if(model.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body("Model not found");
}
return ResponseEntity.status(HttpStatus.OK)
.body(model.get());
}
如果找到模型,则返回模型;如果没有,则返回错误字符串消息。情况可能比这更复杂。
所以我要退一张票 String
或者 Model
类型,无法绑定到的泛型类型 ResponseEntity
.
我的问题是为什么spring团队将这个类设计为泛型类型?还是我用错了这个东西?
2条答案
按热度按时间qacovj5a1#
除其他原因外,
ResponseEntity<T>
也是Spring的归来RestTemplate
http客户端。泛型类型允许客户机代码指定应用于解释http响应的类型,并获取适当的java对象作为响应主体。tyky79it2#
定义api时,定义了在操作正常时将返回的对象的类型,这是应该在响应实体的泛型类型中使用的对象。
如果要返回不同的类型,可以删除泛型并只返回responseentity,然后向其中添加所需的任何对象