我已经在我的项目中使用了验证来处理异常,但现在我知道@ ControllerAdvice也用于异常处理。有人能告诉我为什么使用它吗?有什么区别吗?如何使用它吗?因为我无法从资源中了解。
使用验证:
@RestController
@RequestMapping("/api")
@Validated
public class UserController {
@Autowired
UserRepository userrepo;
@PostMapping(value="/users")
ResponseEntity<?> create( @Valid @RequestBody User user) {
User addeduser = userrepo.save(user);
URI location = ServletUriComponentsBuilder.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(addeduser.getId())
.toUri();
return ResponseEntity.created(location).build();
}
正在使用控制器建议:
@ControllerAdvice
public class GlobalResponseException {
@ExceptionHandler(MyException.class)
public void handleMyException() {}
}
我真的很想知道它是怎么运作的。
1条答案
按热度按时间1cosmwyk1#
@ControllerAdvice是@Component注解的特殊化,它允许在一个全域行程元件中行程整个应用程序的例外状况。它可以被视为由@RequestMapping注解的方法所掷回的例外状况拦截器。您也可以指涉这个:https://medium.com/@jovannypcg/understanding-springs-controlleradvice-cd96a364033f