西瓜の

-人类是因为记录才进入文明-

2020/09/28
20:38
technology

spring boot 全局异常处理失效@RestControllerAdvice

最近在封装shiro+jwt+redis 的自动配置,使用了 @RestControllerAdvice 来返回登录时会出现的 AuthenticationException 异常,响应状态 code 为 401

但是当把这个依赖包导入项目之后,发现 响应状态code 不是 401 ,而是 500.

断点这里,发现并没有走这里的流程。

后来想起另一个依赖包 中也存在 一个 全局异常处理,并且 有一个 Exception 的 异常处理:

断点了一下这里,发现确实是进入了这里的流程。

想了想 spring 应该按照加载 bean 的顺序来处理的。

后边的这个bean 可以 加载在了 前面,命中了 Exception 的异常处理,所以直接 响应了。

解决:

让 前边的异常处理 bean 加载顺序更靠前就可以了。

使用 @Order 指定 bean 的加载优先级