网站建设资讯详细

在B2C社群电商基础上升级整体架构,使系统支持saas形式的电商,开放给商家赋能商家社群电商能力

发表日期:2023-09-06 17:59:26   作者来源:水沐教育科技技术团队   浏览:2273       

1:引入多租户场景:
      技术团队结合业务需要,需要将原来B2C社群电商项目整合成saas体系电商,开放给多商家使用已有的社群电商能力,给商家赋能私域下的社群电商能力。

      考虑了多种方案,既要对原项目业务代码做到无入侵,对原有B2C单体架构下的功能无影响,不要对团队人员产生额外的工作量,以最小的成本实现。因此考虑到以插件方式进行,只要写好通用符合各模块使用的插件,在执行sql时自动拼接上租户id即可,无需其它复杂操作,可以由团队架构写好通用拦截器或者租户相关的插件方式,依据水沐技术团队以往的实践经验,经过多次测试并验证,决定采用无入侵方式的租户插件方式来实现。


2:步骤
2.1 由于原有项目未用mybatis-plus,因此决定升级到mybatis-plus,
升级步骤:
由于我们的项目架构采用微服务架构,所有对mybatis的使用配置均在独立的通用模块里处理的,因此考虑先对一个模块用户模块进行升级,后面整合到通用模块中一起,升级步骤:

2.1.1通用组件整合,如下操作:

分页整合,并排除部分冲突组件

增加mybatis-plus依赖,

2.1.2应用服务中删除引用,在mybatis-plus中已经存在了,不处理可能会有冲突

注意:
引入MyBatis-plus之后请不要再次引入MyBatis以及MyBatis-Spring,以避免因版本差异导致的问题。
在升级到mybatis-plus过程中存在jar包冲突,遇到如下类似错误:
NoClassDefFoundError: org/mybatis/logging/LoggerFactory
完整错误堆栈暂且省略下...
通过Dependency Analyzer等方式可快速分析冲突部分解决一些常见的冲突,如下所示:

2.2 调整mybatis-plusde mapper扫描
mybatis-plus:
# mapper-locations: mapper/*.xml
    mapper-locations: classpath:mybatis/*.xml

2.3未升级之前,在控制台可以看到执行sql,升级mybatis-plus后看不到sql了,通过一下方式可以解决,增加如下:
    configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

以上冲突如下所示: