RestControllerAdvice或者ControllerAdvice注解无效的原因

1、我在项目网关中发现注解无效,我调试了很久都不行,后来我看到每个单体应用中都有一个处理异常类,这就是导致无效的原因
2、我将每个单体应用的异常处理类提取到一个公共基础模块,后来发现注解也是无效。排查之后发现这个异常处理类没有被spring boot 扫描到。
3、提取公共异常处理类到基础模块

@Slf4j
@RestControllerAdvice
public class ExceptionHandlerAdvice {
        @ExceptionHandler({ IllegalArgumentException.class })
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public Map<String, Object> badRequestException(IllegalArgumentException exception) {
        Map<String, Object> data = new HashMap<>();
        data.put("code", HttpStatus.BAD_REQUEST.value());
        data.put("message", exception.getMessage());

        return data;
    }



    @ExceptionHandler({SQLException.class})
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public Map<String,Object> catchSqlException(SQLException sqlException){
        log.error("操作数据库异常", sqlException.getMessage());
        Map<String, Object> data = new HashMap<>();
        data.put("code", HttpStatus.INTERNAL_SERVER_ERROR.value());
        data.put("message", "网络异常,请刷新后重试");
        return data;
    }

}

4、修改入口类的注解

@SpringBootApplication(scanBasePackages="{异常处理类的包名,自己本模块的包名}")

然后需要处理异常的模块在pom中引入该模块即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容