spring 异常处理中的@ControllerAdvice

kyks70gy  于 2022-10-31  发布在  Spring
关注(0)|答案(1)|浏览(136)

我已经在我的项目中使用了验证来处理异常,但现在我知道@ 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() {}
    }

我真的很想知道它是怎么运作的。

1cosmwyk

1cosmwyk1#

@ControllerAdvice是@Component注解的特殊化,它允许在一个全域行程元件中行程整个应用程序的例外状况。它可以被视为由@RequestMapping注解的方法所掷回的例外状况拦截器。您也可以指涉这个:https://medium.com/@jovannypcg/understanding-springs-controlleradvice-cd96a364033f

相关问题