阅读有关如何处理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自动配置。有人可以解释吗?
添加回答
举报
0/150
提交
取消