为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Boot-处理NoHandlerFoundException

Spring Boot-处理NoHandlerFoundException

噜噜哒 2021-04-11 20:35:03
阅读有关如何处理NoHandlerFoundException的Spring参考指南,并发现Spring默认将其设置throwExceptionIfNoHandlerFound为false。知道这一点后,我认为将此参数设置为是一个好主意true。我正在使用Spring Boot。这样做:MyConfig.javaimport org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.web.servlet.DispatcherServlet;@SpringBootApplicationpublic class MyConfig {    public static void main(String[] args) {        ConfigurableApplicationContext context = SpringApplication.run(MyConfig.class, args);        context.getBean(DispatcherServlet.class).setThrowExceptionIfNoHandlerFound(true);        // ...    }}好吧,现在throwExceptionIfNoHandlerFound等于true。但是,这没有按预期进行。将DispatcherServlet继续不扔的NoHandlerFoundException。这样,我无法处理它。CustomExceptionHandler.java (此方法无效)import org.springframework.http.HttpHeaders;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.context.request.WebRequest;import org.springframework.web.servlet.NoHandlerFoundException;import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;@ControllerAdvicepublic class CustomExceptionHandler extends ResponseEntityExceptionHandler {    @Override    protected ResponseEntity <Object> handleNoHandlerFoundException(NoHandlerFoundException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {        // do my own handle ...        // then, return ...    }}经过一番搜索,发现添加@EnableWebMvc应该可以。然后,我确实将此注释添加到了我的CustomExceptionHandler这样,手柄就可以工作了。但是,我正在使用Spring Boot。Spring Boot文档建议,如果我插入@EnableWebMvc,我将失去一些Spring Boot MVC自动配置功能,因为我将完全控制Spring MVC。(请参阅此处)。“如果要完全控制Spring MVC,则可以添加带有@EnableWebMvc注释的自己的@Configuration。”我会丢失Spring MVC自动配置吗?我的意思是@EnableWebMvc,就我而言,它不在@Configuration课程中。我的问题基于这样一个事实,即我不确定上面的代码如何工作,我想知道是否还有另一种方式可以做到这一点而又不会丢失Spring MVC自动配置。有人可以解释吗?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 1236 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信