微服务异常处理器能否放置在独立的公共基础服务中?
解答
全局异常处理器完全可以统一放在公共基础jar中
这是微服务架构下复用公共逻辑的标准实践,无需每个业务服务单独开发重复的异常处理逻辑。
具体实现注意事项:
- 在基础jar中编写用
@RestControllerAdvice(接口服务场景)或@ControllerAdvice(带页面渲染场景)标注的全局异常处理类,按常规逻辑编写不同异常的捕获处理方法即可 - 要保证业务服务启动时能扫描到该异常处理类,优先推荐自动装配方案避免业务侧额外配置:
- 在基础jar中新增Spring Boot自动配置类,将全局异常处理类注册为Bean
- 在基础jar的
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中新增上述自动配置类的全路径 - 业务服务引入基础jar后,Spring Boot会自动加载对应配置,无需额外编码
- 若个别业务服务需要自定义部分异常的处理逻辑,只需要在服务本地编写优先级更高(通过
@Order注解设置更小的优先级数值)的异常处理器,捕获对应需要定制的异常即可,不会和公共异常处理器冲突
公共基础jar无需是可独立运行的Spring Boot应用
该基础jar仅作为依赖包被业务服务引入,不需要做以下配置:
- 不需要编写Spring Boot启动类
- 不需要引入
spring-boot-maven-plugin打可执行jar包,用普通Jar打包方式即可 - 不需要独立部署运行,所有逻辑会在引入它的业务服务的Spring上下文中生效
内容的提问来源于stack exchange,提问作者Mohamed Koubaa
相关产品推荐
相关产品推荐

