springboot学习(八十五) 解决springboot3.2找不到资源无法抛出404错误的问题
2023-12-28 19:50:35
前言
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);
}
文章来源:https://blog.csdn.net/u011943534/article/details/135276253
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!