当前位置: 首页 > 图灵资讯 > 技术篇> 在 Spring Cloud Alibaba 中如何将多个业务模块的 Entity、Mapper 和 Service 集中到 Common 模块?

在 Spring Cloud Alibaba 中如何将多个业务模块的 Entity、Mapper 和 Service 集中到 Common 模块?

来源:图灵教育
时间:2025-03-18 17:02:36

在 spring cloud alibaba 中如何将多个业务模块的 entity、mapper 和 service 集中到 common 模块?

Spring Cloud Alibaba 优化多模块代码结构:将公共组件集中到 Common 模块

在基于 Spring Cloud Alibaba (2021.0.1) 和 Spring Boot (2.6.4) 模块化设计在微服务项目中非常重要。本文探讨了如何有效地将多个业务模块化 (例如 merchant 和 supply 模块) 的 Entity、Mapper 和 Service 代码集中在公共模块中 (common 模块) 为了避免代码冗余,提高代码的可维护性和重用性。

项目结构

假设工程结构如下:

  1. common 模块: 包含 model (Entity)、mapper、service、impl、数据库连接配置,统一异常处理,Redis JSON 数据格式化,统一响应结果封装,Swagger 集成、MyBatis-Plus 配置、CORS 公共组件,如跨域配置。
  2. merchant 模块: 商户端微服务主要包括 Controller 层,外部提供 API 接口。
  3. supply 模块: 供应商端微服务也主要包括 Controller 层,外部提供 API 接口。
问题及解决方案

集中公共组件 common 模块后,启动 merchant 或 supply 模块可能会遇到类似的情况 org.springframework.beans.factory.BeanCreationException 错误,提示 RequestMappingHandlerAdapter 或其他 Bean 失败的初始化。这通常是因为 Spring Boot 无法正确扫描 common 模块中的组件。

解决方法:

  1. 准确的包扫描配置: 在每个业务模块中 (例如 merchant 和 supply) 在启动类中,使用 @SpringBootApplication 注解的 scanBasePackages 属性,明确指定要扫描的包路径,确保包含 common 模块的包装路径。例如:

    @SpringBootApplication(scanBasePackages = {"com.quanneng", "com.quanneng.common"}) // 确保包含common模块的包路径
    @MapperScan("com.quanneng.common.mapper") // 在common模块下扫描Mapper接口
    public class MerchantApiApplication {
        // ...
    }

    注意: com.quanneng 用你的项目根包名代替,com.quanneng.common 为 common 包装路径的模块。 @MapperScan 显式扫描采用注释 common 模块下的 Mapper 接口。

  2. 避免重复配置: 确保在 common 数据库连接已正确配置在模块中,MyBatis-Plus、Swagger 避免在业务模块中重复配置等公共组件。 例如,只在 common 模块中配置 DataSource,不再需要配置业务模块。

  3. 考虑创建 Spring Boot Starter: 为使管理和重用更加优雅 common 建议将其打包成模块 Spring Boot Starter。这样,其他模块只需要 pom.xml 可以使用添加依赖性 common 无需手动配置包扫描路径,模块中的组件也降低了出错的可能性。

  4. 异常统一处理: 为了避免在多个模块中重复定义异常处理器,项目中应该只有一个统一的异常处理机制。

通过以上步骤,可以有效解决 BeanCreationException 并实现错误 common 复用模块中的公共组件,从而提高代码质量和开发效率。 记得仔细检查包名和路径的正确性,以确保 Spring Boot 能正确扫描 common 模块中的所有组件。

以上就是在 Spring Cloud Alibaba 如何在多个业务模块中使用多个业务模块 Entity、Mapper 和 Service 集中到 Common 模块?详情请关注图灵教育的其他相关文章!