在SpringBoot中引发NoHandlerFoundException并配置自定义404页

在SpringBoot中引发NoHandlerFoundException并配置自定义404页,spring,spring-boot,exception,Spring,Spring Boot,Exception,我学春天才7个月。虽然我只使用SpringMVC,但我想通过抛出NoHandlerFoundException或在DispatcherServlet中启用它来配置定制404页面。现在,我正在学习spring boot,有人能给我解释一下吗?我也有同样的问题,已经解决了。下面给出了解决相同问题的步骤 创建一个类GlobalExceptionHandler,并用@ControllerAdvice @ControllerAdvice 公共类GlobalExceptionHandler { @Excep

我学春天才7个月。虽然我只使用SpringMVC,但我想通过抛出NoHandlerFoundException或在DispatcherServlet中启用它来配置定制404页面。现在,我正在学习spring boot,有人能给我解释一下吗?

我也有同样的问题,已经解决了。下面给出了解决相同问题的步骤

  • 创建一个类
    GlobalExceptionHandler
    ,并用
    @ControllerAdvice
  • @ControllerAdvice
    公共类GlobalExceptionHandler
    {
    @ExceptionHandler(NoHandlerFoundException.class)
    公共字符串handleNotFoundError(异常ex)
    {
    返回“重定向:/yourCustom404page”;
    }
    }
    
  • 默认情况下,当页面/资源不存在时,servlet容器将呈现默认的404页面。如果需要自定义404响应,则需要告诉
    DispatcherServlet
    在未找到处理程序时引发异常。我们可以通过将
    throweExceptionIfNoHandlerFound
    servlet初始化参数设置为
    true
  • 要实现这一点

    a。在弹簧靴中
    spring.resources.add mappings=false
    在application.properties或yaml文件中

    b。如果spring mvc基于java的配置

    公共类AppInitializer扩展AbstractAnnotationConfigDispatcherServletInitializer
    {
    ...
    @凌驾
    受保护的DispatcherServlet createDispatcherServlet(WebApplicationContext servletAppContext)
    {
    最终DispatcherServlet=(DispatcherServlet)super.createDispatcherServlet(servletAppContext);
    setThroweExceptionIfNoHandlerFound(true);
    返回servlet;
    }
    }
    
    c。如果是基于spring mvc xml的配置,请按如下方式初始化dispatcher servlet

    
    调度员
    org.springframework.web.servlet.DispatcherServlet
    ThroweExceptionIfNoHandlerFound
    真的
    
    为什么不试试春天的老办法呢?它应该在启动时工作,有人建议我以这种方式处理异常。在春季,我通过在dispatcherServlet.xml中将ThorweExceptionIfNoHandlerFound设置为true来捕获404 not found期望值。但在boot中,我无法找到正确捕获404NotFound异常的方法。@ExceptionHandler(Exception.class)是否也捕获404NotFound异常?