Использую пружинный ботинок 2.0.6.
У меня есть отображение, как показано ниже:
@RestController
@RequestMapping(value = {"/"})
public class A {
@PostMapping(value = {"test"}, consumes = MediaType.APPLICATION_JSON_VALUE)
public String getResponse(@RequestBody String message) throws Exception{
return "Hello world!";
}
}
Это работает, когда я использую приведенный ниже фрагмент кода в том же классе (класс A)
@RestControllerAdvice
@Order(value = Ordered.HIGHEST_PRECEDENCE)
@RestController
@RequestMapping(value = {"/"})
public class A {
@ExceptionHandler({HttpMediaTypeNotSupportedException.class})
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public ResponseEntity<String> processException(HttpMediaTypeNotSupportedException exception){
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body("error");
}
@PostMapping(value = {"test"}, consumes = MediaType.APPLICATION_JSON_VALUE)
public String getResponse(@RequestBody String message) throws Exception{
return "Hello world!";
}
}
но когда я использую отдельный класс с RestControllerAdvice (assignableTypes = A.class) аннотацией , он не работает.
@RestControllerAdvice(assignableTypes = A.class)
@Order(value = Ordered.HIGHEST_PRECEDENCE)
public class GlobalExceptionHandler{
@ExceptionHandler({HttpMediaTypeNotSupportedException.class})
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public ResponseEntity<String> processException(HttpMediaTypeNotSupportedException exception){
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body("error");
}
}
Примечание: у меня есть другой класс, такой как B, который я хочу обрабатывать по-разному для класса B.