我有以下几点@ControllerAdvice:
@ControllerAdvice
public class ExceptionHandlingController {
@ExceptionHandler(value = { MethodArgumentNotValidException.class,
EntityExistsException.class, BadCredentialsException.class, MismatchedInputException.class })
public ResponseEntity<ExceptionResponse> invalidInput(RuntimeException ex) {
ExceptionResponse response = new ExceptionResponse();
response.setErrorCode("BAD_REQUEST");
response.setErrorMessage(ex.getMessage());
return new ResponseEntity<ExceptionResponse>(response,
HttpStatus.BAD_REQUEST);
}
}
验证器以这种方式绑定到控制器:
@RestController
@RequestMapping("/api/authentication")
public class UserAccountControllerImpl implements UserAccountController {
@Autowired
private UserAccountService userAccountService;
@Override
public UserAccountEntity login(@Valid @RequestBody UserAccountEntity account,
HttpServletResponse response) throws BadCredentialsException {
return userAccountService.authenticateUserAndSetResponsenHeader(
account.getUsername(), account.getPassword(), response);
}
@Override
public UserAccountEntity create(@Valid @RequestBody UserAccountEntity userAccount,
HttpServletResponse response) throws EntityExistsException {
String username = userAccount.getUsername();
String password = userAccount.getPassword();
userAccountService.saveIfNotExists(username, password);
return userAccountService.authenticateUserAndSetResponsenHeader(
username, password, response);
}
//used to bind the validator to the incoming request
@InitBinder
public void binder(WebDataBinder binder) {
binder.addValidators(new UserAccountValidator());
}
}
为什么抓不到MethodArgumentNotValidException?
至尊宝的传说
相关分类