Spring 制作弹簧&x27;s@RequestBody注释在失败时返回自定义响应

Spring 制作弹簧&x27;s@RequestBody注释在失败时返回自定义响应,spring,spring-boot,Spring,Spring Boot,我有一个控制器,如下所示: public void createEntity(@Valid @RequestBody final MyEntity myEntity) {} 但是,当对象转换失败时,API会自动返回带有Java堆栈跟踪的400。如何在故障响应时修改此选项?(我希望更改或删除响应消息)。下面是一个使用@ExceptionHandler注释执行此操作的示例 @RestController public class Controller { @RequestMapping(

我有一个控制器,如下所示:

public void createEntity(@Valid @RequestBody final MyEntity myEntity) {}

但是,当对象转换失败时,API会自动返回带有Java堆栈跟踪的
400
。如何在故障响应时修改此选项?(我希望更改或删除响应消息)。

下面是一个使用
@ExceptionHandler
注释执行此操作的示例

@RestController
public class Controller {

    @RequestMapping(value = "/", method = RequestMethod.POST)
    public void createEntity(@Valid @RequestBody final MyEntity myEntity) {
        //
    }


    @ControllerAdvice
    public class RestEndpointExceptionHandler { 

        @ExceptionHandler(MethodArgumentNotValidException.class)
        public ResponseEntity<Object> handleNotValidExceptionException(HttpServletRequest req, MethodArgumentNotValidException ex) {
          Object customException = "Validation failed";
          return new ResponseEntity<Object>(customException, HttpStatus.BAD_REQUEST);
        }

    }
}
@RestController
公共类控制器{
@RequestMapping(value=“/”,method=RequestMethod.POST)
public void createEntity(@Valid@RequestBody final MyEntity MyEntity){
//
}
@控制器建议
公共类RestEndpointExceptionHandler{
@ExceptionHandler(MethodArgumentNotValidException.class)
公共响应性handleNotValidException(HttpServletRequest请求,MethodArgumentNotValidException ex){
对象customException=“验证失败”;
返回新的响应属性(customException、HttpStatus.BAD_请求);
}
}
}

我将代码推入中,您可以将
@ExceptionHandler
@ResponseStatus
一起使用,并将处理程序保留为空,以便只返回状态代码

@ExceptionHandler(EmptyResultDataAccessException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public void notFoundException() {
}

检查
@ExceptionHandler
@ControllerAdvice
是否可以将
RestEndpointExceptionHandler
移动到一个新类并在控制器之间共享?是的,这是绝对可能的,它将自动应用于所有控制器。