主页 > 其他  > 

springboot学习(八十五)解决springboot3.2找不到资源无法抛出404错误的问题

springboot学习(八十五)解决springboot3.2找不到资源无法抛出404错误的问题
前言

springboot3.2以下可以定义ErrorPageRegistrar将404错误转发到一个接口地址,但升级到springboot3.2(spring6.1)后,该配置不生效,抛出了500错误。

以前的错误页面处理如下:

@ConditionalOnClass(ErrorPageRegistry.class) public class ErrorPageAutoConfiguration implements ErrorPageRegistrar { @Override public void registerErrorPages(ErrorPageRegistry registry) { log.info("-----------错误页面路径配置------------"); registry.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404"), new ErrorPage(HttpStatus.FORBIDDEN, "/403"), new ErrorPage(HttpStatus.BAD_REQUEST, "/400"), new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500")); log.info("-----------错误页面路径配置结束------------"); } }
解决方式

通过查看日志发现springboot3.2默认寻找静态资源,在找不到资源后抛出了NoResourceFoundException,通过ExceptionAdivisor抓取做了处理,而并没有对NoResourceFoundException进行特殊处理,默认进入了500错误。

ExceptionAdivisor中添加一组对此异常的处理,即可:

@ExceptionHandler(value = NoResourceFoundException.class) @ResponseStatus(HttpStatus.NOT_FOUND) public ResponseEntity to404Exception(NoResourceFoundException e) { AccessLogUtils.log(SpringUtils.getRequest(), _404); return res(HttpStatus.NOT_FOUND.value(), "找不到资源", e); }
标签:

springboot学习(八十五)解决springboot3.2找不到资源无法抛出404错误的问题由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“springboot学习(八十五)解决springboot3.2找不到资源无法抛出404错误的问题