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

前言

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

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

java 复制代码
@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中添加一组对此异常的处理,即可:

java 复制代码
    @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);
    }
相关推荐
vx_bisheyuange16 小时前
基于SpringBoot的知识竞赛系统
大数据·前端·人工智能·spring boot·毕业设计
qq_124987075316 小时前
基于微信小程序的宠物寄领养系统(源码+论文+部署+安装)
java·spring boot·后端·微信小程序·小程序·宠物·计算机毕业设计
那我掉的头发算什么16 小时前
【SpringBoot】从创建第一个spring项目开始
spring boot·后端·spring
Chan1617 小时前
【 Java八股文面试 | RabbitMQ篇 】
java·spring boot·spring·面试·java-ee·rabbitmq·java-rabbitmq
Charlie_lll17 小时前
RAG+ReAct 智能体深度重构|从「固定三步执行」到「动态思考-行动循环」
人工智能·spring boot·redis·后端·ai·重构
蚰蜒螟17 小时前
Spring Boot 与 Tomcat 错误页面处理机制深度解析
spring boot·tomcat
+VX:Fegn089517 小时前
计算机毕业设计|基于springboot + vue校园实验室管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
Coder_Boy_17 小时前
基于SpringAI的在线考试系统-核心模块的数据模型交互关系
java·数据库·人工智能·spring boot·交互
We....17 小时前
SpringBoot 微服务拦截器与负载均衡实践
java·spring boot·微服务·负载均衡
Swift社区17 小时前
Spring Boot 配置文件未生效
java·spring boot·后端