首页 > 一个关于Java应用的模块化问题

一个关于Java应用的模块化问题

最近赶工一个电商的项目,Java生态作为后段Service技术栈。
开发过程中遇到一个比较头疼的问题,由于是接受前人的项目,对应Entity, Repository以及controller都已经存在了,但是结构比较乱,耦合行比较强,我想要对他通过模块化的方法进行重构。

描述下系统里的一个功能:

主框架

spring-boot

订单功能

支付功能

功能虽然不是特别多,但是现在支付模块强依赖于订单模块,两套Rest API强依赖于后台CRUD Repository接口,spring-boot强依赖于配置文件。由此遇到的问题:

  1. 从订单到支付的过程通过两个rest api实现,中间需要通过客户端将订单数据再次发送给支付rest api,这里会增大数据流量且也数据安全隐患

我的想法是,将支付订单两个的模块的对外rest进行合并,保持两个模块的repository,为两个模块分别提供Concrete Service中间件,利用Service的抽象接口,将Rest和中间件分离,用spring boot未上层rest注入对应Service实例。由于解耦了Service和Rest,对Rest的测试就可以完全不用顾忌Service的实现。


另外,我发现虽然spring boot对于快速开发很友好,但是却对整体架构的要求严格,任何一项配置或者组件的错误,都会导致整个系统无法启动,而不像寻常spring项目,可以保持正常的启动,抛出异常后可以利用热部署马上完成修复。我觉得在模块化的前提下,保持正常启动以及热部署更能让之后的问题定位以及修复变得更有效率。


最后一个问题:用play替换spring boot web 是否能更能将系统模块化分割?


工作量貌似也不小,有重新架构的功夫,还不如全新写。

【热门文章】
【热门文章】