当前位置: 首页 > news >正文

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);
    }

相关文章:

  • 使用python的pika链接rabbitMq断裂
  • 【网络面试(5)】收发数据及断开服务器(四次挥手)
  • 自动化网络故障修复管理
  • 常用设计模式全面总结版(JavaKotlin)
  • 垃圾收集器与内存分配策略
  • 记录:开始学习网络安全
  • 牛客网SQL训练5—SQL大厂面试真题
  • 信号量机制(重要)-第二十八天
  • 系统学习Python——装饰器:函数装饰器-[对方法进行装饰:基础知识]
  • 【JVM】一文掌握JVM垃圾回收机制
  • 计算机基础面试题 |04.精选计算机基础面试题
  • 微软开源,全平台通用:Shell 自动补全工具 | 开源日报 No.132
  • uni-app tabbar组件
  • R_handbook_统计分析
  • ES应用_ES原理
  • 【c语言】飞机大战2
  • centos 安装 配置 zsh
  • Stable Diffusion WebUI制作光影文字效果
  • Android Studio 如何隐藏默认标题栏
  • 为即将到来的量子攻击做好准备的 4 个步骤
  • 西域都护府博物馆今日在新疆轮台县开馆
  • 江苏疾控:下设部门无“病毒研究所”,常荣山非本单位工作人员
  • 聚焦中华文明精神标识,多校专家学者跨学科对话交流
  • 河南一县政府党组成员签订抵制违规吃喝问题承诺书,现场交给县长
  • 上海市税务局回应刘晓庆被举报涉嫌偷漏税:正依法依规办理
  • 泽连斯基抵达安卡拉,称乌将派出最高级别代表团参与谈判