我已经学习Spring仅仅7个月了。当我仅使用spring MVC时,我过去通过在调度程序servlet中抛出noHandlerFoundException来处理404找不到的异常。现在,我正在学习春季启动,任何人都可以向我解释如何处理启动时找不到404的异常或noHandlerFoundException吗?
答案 0 :(得分:0)
为什么不尝试像Spring那样的旧方法? 它应该可以在Boot中工作,并且建议我以这种方式处理异常。
答案 1 :(得分:0)
我遇到了同样的问题,解决了。下面给出解决问题的步骤。
GlobalExceptionHandler
注释的类@ControllerAdvice
@ControllerAdvice
public class GlobalExceptionHandler
{
@ExceptionHandler(NoHandlerFoundException.class)
public String handleNotFoundError(Exception ex)
{
return "redirect:/yourCustom404page";
}
}
DispatcherServlet
引发异常。我们可以通过将throwExceptionIfNoHandlerFound
servlet初始化参数设置为true
实现这一目标
a。春季靴
spring.resources.add-mappings=false
在您的application.properties或yaml文件中。
b。如果基于spring-mvc java的配置是
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer
{
...
@Override
protected DispatcherServlet createDispatcherServlet(WebApplicationContext servletAppContext)
{
final DispatcherServlet servlet = (DispatcherServlet) super.createDispatcherServlet(servletAppContext);
servlet.setThrowExceptionIfNoHandlerFound(true);
return servlet;
}
}
c。如果是基于spring-mvc xml的配置,则像这样初始化您的调度程序servlet
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>throwExceptionIfNoHandlerFound</param-name>
<param-value>true</param-value>
</init-param>
</servlet>