我为一个控制器有两个ControllerAdvice类。
@RestController
@RequestMapping("/student")
public class StudentRestController {
}
第一控制者建议
@ControllerAdvice(assignableTypes = {
StudentRestController.class
})
public class StudentRestExceptionHandler {
@ExceptionHandler(StudentNotFoundException.class)
@ResponseStatus(value = HttpStatus.NOT_FOUND)
@ResponseBody
public ResponseDto studentNotFoundException(StudentNotFoundException e) {
ResponseDto responseDto = new ResponseDto();
responseDto.setStatus(ResponseDtoStatus.ERROR);
responseDto.setMessage(String.format("Student [%s] not found", e.getId()));
return responseDto;
}
@ExceptionHandler(AccessDeniedException.class)
@ResponseStatus(value = HttpStatus.FORBIDDEN)
public void accessDeniedException(AccessDeniedException e) {
}
}
第二个控制器建议是一个通用的控制器建议
@ControllerAdvice(assignableTypes = {
StudentRestController.class
})
public class GeneralRestExceptionHandler {
@ExceptionHandler(StudentNotFoundException.class)
@ResponseStatus(value = HttpStatus.NOT_FOUND)
@ResponseBody
public ResponseDto studentNotFoundException(StudentNotFoundException e) {
ErrorDto errorDto = new ErrorDto();
errorDto.setStatus(ResponseDtoStatus.ERROR);
errorDto.setMessage(String.format("Student [%s] not found", e.getId()));
return errorDto;
}
}
我想同时使用基于覆盖的两个控制器建议,如果未在最高顺序建议中映射任何异常,则应从最低优先顺序中选择,这可能吗?
例如,如果我要使用GeneralRestExceptionHandler中的StudentNotFoundException,并且同时使用AccessDeniedException,则应映射到StudentRestExceptionHandler。
我可以同时使用两个ControllerAdvices吗? 我尝试使用Order,但没有用。