我有一个控制器
@RestController
public class BookController {
@GetMapping("/find-by-name/{name}")
public ResponseEntity<BookEntity> findByName(@PathVariable String name) {
...
如果找到了名称,那么在这个方法中我返回
return ResponseEntity.ok(book);
如果没有,那么
return new ResponseEntity("name= " + name + " not found", HttpStatus.NOT_ACCEPTABLE);
一切正常,但编译器发誓:
Raw use of parameterized class 'ResponseEntity'
Unchecked assignment: 'org.springframework.http.ResponseEntity' to 'org.springframework.http.ResponseEntity<BookEntity>'
Unchecked call to 'ResponseEntity(T, HttpStatus)' as a member of raw type 'org.springframework.http.ResponseEntity'
我试着这么做(我在spring.io网站上找到了这个选项)
public ResponseEntity<?> findByName(@PathVariable String name) {
...
return new ResponseEntity<>("name= " + name + " not found", HttpStatus.NOT_ACCEPTABLE);
那个错误消失了,但现在我发誓:
Generic wildcard types should not be used in return types
这两个版本的代码都可以使用,但我想了解如何正确地实现它。
2条答案
按热度按时间qvsjd97n1#
ResponseEntity
表示http响应,包括标头、正文和状态。通常一个回应应该包含一个主体,是吗String
,Void
或者任何你喜欢的东西。因此,t表示身体的类型。例如,或者您可以使用以下表格:
zbdgwd5y2#
你可以用
Object
作为菱形操作符中的类:到目前为止这对我来说还不错。这是因为一切都是从对象扩展而来的。
对于错误处理,我将使用restcontrolleradvice。当illegalargumentexception到达控制器方法时,将调用下面的方法。
更多信息请看这里。在应用程序中使用runtimeexceptions时,这种类型的全局异常处理非常实用。