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);
    }
相关推荐
雪芽蓝域zzs1 小时前
第 2 章:MySQL8.0 安装与基础配置
spring boot
行百里er2 小时前
Spring Insight 里如何把 Span 画成瀑布时间线
spring boot·后端·监控
专业程序开发源2 小时前
springboot旅游推荐系统82074-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·php·课程设计·旅游
user_admin_god2 小时前
第 11 篇:实践三 —— 表单 / 合同字段抽取
java·人工智能·spring boot·语言模型
IT枫斗者枫哥2 小时前
Spring Boot Excel 导入实战:把“导入失败”改成逐行错误报告
java·spring boot
杨运交3 小时前
[073][示例]基于Redis分布式锁的定时任务调度实践
spring boot
吃饱了得干活3 小时前
一个订单的奇幻漂流:RabbitMQ 五大难题实战
spring boot·后端·rabbitmq
雪芽蓝域zzs4 小时前
第 4 章:Postman 安装与基础使用
spring boot
binqian4 小时前
【java】Java 两种锁机制与线程阻塞唤醒原理
jvm·spring boot·spring
huaweichenai5 小时前
spring boot实现任务异步处理(队列)
java·spring boot