当没有指定具体控制器异常处理方法时,默认走的异常会被tomcat捕获;
/**
* 基于ControllerAdvice的异常处理只能处理Spring层面的异常;
* 如果我们自定义了过滤器在过滤器中抛出了异常这种情况下需要更高级的异常捕获
* ControllerAdvice无法捕获这部分异常
* */
public static void main(String[] args) {
AnnotationConfigServletWebServerApplicationContext context =
new AnnotationConfigServletWebServerApplicationContext(WebConfig.class);
RequestMappingHandlerMapping handlerMapping = context.getBean(RequestMappingHandlerMapping.class);
handlerMapping.getHandlerMethods().forEach((RequestMappingInfo k, HandlerMethod v)->{
System.out.println("映射路径: " + k + "\t方法信息: " + v);
});
}
我们可以在配置类中添加如下代码
例如在这个配置类中添加MVC的配置
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {
添加这些bean
// 修改了tomcat服务器的默认页面
@Bean
public ErrorPageRegistrar errorPageRegistry(){
return webServerFactory -> webServerFactory.addErrorPages(new ErrorPage("/error"));
}
// tomcat错误后处理器.
@Bean
public ErrorPageRegistrarBeanPostProcessor errorPageRegistrarBeanPostProcessor(){
return new ErrorPageRegistrarBeanPostProcessor();
}