我知道在 Spring @RestController 类中,我们可以做类似的事情:
@GetMapping("/"
public ResponseEntity<Weather> getWeatherRecordsById(@PathVariable Integer id){
mySpringDataJPARepository.findById(id)
.map(res -> new ResponseEntity<>(res, HttpStatus.Ok)
.orElseGet(() -> new ResponseEntity<>(HttpStatus.NotFound);
但是,这似乎是手动/冗长的 - 当您需要返回给用户/客户端的唯一响应/HTTP 代码时,是否有更有效的方法来处理成功和失败的 HTTP 响应? Spring AOP/面向方面的编程和建议?欢迎任何想法,请告诉我 - 谢谢!
问题是你需要有适当的异常/错误处理策略。
这意味着管理已检查和未检查的异常。
然后您需要使用 @AdviceController 注释创建一个全局异常处理程序,在其中将异常与预期响应及其 Http 状态进行匹配。
这不仅仅是关于AOP,或者Spring,它是关于错误处理,或者异常处理策略。
例如:
@ControllerAdvice
public class CustomResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(WeatherNotFoundException.class)
public ResponseEntity<?> weatherNotFoundHandler(WeatherNotFoundException ex) {
return new ResponseEntity<>(new ErrorDetails("Weather Not Found", ex.getMessage()), HttpStatus.NOT_FOUND);
}
// Additional exception handlers can be defined here for different types of exceptions
}