在多模块下,使用Knife4j进行接口测试时发现,全局异常处理器无法捕获自定义异常,经检查,已经在该模块下的依赖文件中引入相关模块,但是在返回给前端数据时,对于错误的请求返回的还是
message:Internal server error
status:500
但是在后端却能显示自己抛出的自定义异常消息!
在经过网上的搜索无果后尝试自己追踪问题根源,发现全局异常处理器工作正常,但是模块无法扫描到全局异常处理器,最后突然想起来可以手动扫描配置类,于是顺利解决,至于使用方法可见另一篇文章,但相比之下不如以下方法更简单
在问题解决后并没有就此罢休,想借此机会找到更优质解决方案,在经过一段时间查找后,从其他网页偶然发现了以下方法(已测试通过):
当多模块项目下,若A模块需要依赖Common模块,应当在Common模块下创建
com.example.config.ModelNameConfiguration.java
配置类,如下:package com.example.common.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; /** * @Configuration 注解表示该类为配置类 * @ComponentScan 注解表示扫描该模块中的某些包,注解内的参数为数组类型 * 使用{"com.example.common.A","com.example.common.B"}表示多个包 */ @Configuration @ComponentScan({ "com.example.common.exception.handler", "com.example.common.utils"}) public class CommonConfiguration { }
而后,在需要引用它的模块的启动类上,添加如下注解
@Import({CommonConfiguration.class})
若需要引用多个模块,同上,
@Import
注解的参数为数组类型
Date:2022/12/07 20:33
Author:Evan.LJ