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);
    }
相关推荐
清风絮柳2 分钟前
65.少儿英语微信小程序
vue.js·spring boot·微信小程序·小程序·毕业设计
Java成神之路-8 分钟前
MyBatis 开发模式演进:原生、Spring 与 Spring Boot 整合实战(MyBatis系列2)
spring boot·spring·mybatis
Yiyi_Coding25 分钟前
SpringBoot4.X: 彻底消灭 NullPointerException
spring boot
她说..1 小时前
Java 基本数据类型高频面试题
java·开发语言·jvm·spring boot
希望永不加班1 小时前
SpringBoot 整合 MongoDB
java·spring boot·后端·mongodb·spring
诗人不写诗2 小时前
spring boot apm生态
java·数据库·spring boot
卓怡学长3 小时前
m307自习室预订座位管理分析与实现
java·spring boot·spring
Arya_aa3 小时前
生猪养殖溯源系统前期准备与SpringBoot框架
java·spring boot
2301_771717214 小时前
idea中springboot中使用junit测试报错的解决方案
spring boot·junit·intellij-idea
火飞鹰4 小时前
封装MinIO为starter
java·数据库·spring boot