Java Spring控制器通知异常处理程序始终返回404

Java Spring控制器通知异常处理程序始终返回404,java,spring,spring-mvc,exception-handling,http-status-code-404,Java,Spring,Spring Mvc,Exception Handling,Http Status Code 404,@ExceptionHandler在控制器内调用时返回带有MyResponse对象的200响应,但从ControllerAdvice调用时,返回带有一般404消息的404。 我希望它返回一个带有MyResponse对象的200响应 下面是我在Controller和ControllerAdvice中处理异常的代码。在测试ControllerAdvice时,我在控制器中对其进行了注释。调试显示,在控制器中注释后,正在控制器建议中调用该方法 下面是我如何定义ControllerAdvice的 问题是我

@ExceptionHandler在控制器内调用时返回带有MyResponse对象的200响应,但从ControllerAdvice调用时,返回带有一般404消息的404。 我希望它返回一个带有MyResponse对象的200响应

下面是我在Controller和ControllerAdvice中处理异常的代码。在测试ControllerAdvice时,我在控制器中对其进行了注释。调试显示,在控制器中注释后,正在控制器建议中调用该方法

下面是我如何定义ControllerAdvice的


问题是我的异常处理程序需要
@ResponseBody
注释。 我的控制器在Spring中隐式地实现了这一点,但我必须在外部指定它


旁注:我必须删除
@EnableWebMvc
注释,以便我的junit测试能够正常工作,因为我正在测试配置的其他地方初始化上下文(即使服务器运行时一切都正常)

如果我需要在异常处理程序中返回一个页面,该怎么办?
@ExceptionHandler(MyException.class)
     public MyResponse handleMyException(HttpServletRequest req, MyException e) {
    return new MyResponse(MyResponse.ERROR_CODE, e.getErrorCode(), e.getMessage(), "", null);
}
@EnableWebMvc 
@ControllerAdvice 
@ResponseStatus(value= HttpStatus.OK)
public class ControllerAdviceExceptionHandler {