Spring Boot-处理NoHandlerFoundException

阅读有关如何处理NoHandlerFoundException的Spring参考指南,并发现Spring默认将其设置throwExceptionIfNoHandlerFound为false。


知道这一点后,我认为将此参数设置为是一个好主意true。


我正在使用Spring Boot。


这样做:


MyConfig.java


import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.context.ConfigurableApplicationContext;

import org.springframework.web.servlet.DispatcherServlet;


@SpringBootApplication

public 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;


@ControllerAdvice

public 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自动配置。有人可以解释吗?


噜噜哒
浏览 1237回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java