?若依框架介绍
若依框架是一款基于springboot技术栈的单体应用快速开发框架,它包括了前后端两部分。主要提供了应用开发中通用的功能模块。例如菜单管理、角色管理、权限管理、用户管理、字典管理、日志管理、消息管理、登陆、授权等通用模块。基于若依框架我们可以快速构建可运行的单体应用,只需要在框架上添加自己的业务模块即可,对于企业开发或者个人开发都是一款不错的神器。这是若依部分截图:
?框架不足点
最近一直在研究若依框架,看看它的架构是怎样构建的。同样的若依也采用了分模块开发思想,它拆分出了几大模块,其主要模块职责和依赖关系如图所示:
从这个依赖图可以看到,若依框架模块定义上有两点不足:
1、一个模块拆分成两部分,缺失了整体性 。如ruoyi-system它的dao,service,domain单独一个模块,但是把controller又单独抽离出来放到了应用的入口模块ruoyi-admin上
2、模块的抽象和依赖顺序问题。如ruoyi-system虽然是通用模块,但是实际上它也是一种业务,只不过是功能通用的业务,所以它应该比ruoyi-framework 更接近应用,应该是ruoyi-framework的上层,但是若依框架里面采用的是ruoyi-framework依赖ruoyi-system,让人感觉是底层依赖了上层模块,毕竟个人觉得framework是做技术通用模块不涉及业务功能,所以它应该提供更底层功能。
?改进建议
以上分析的两个问题,作者可能为了解决system模块中controller部分需要调用framework中的一些服务,比如redis,token服务,而framework模块中的一些service又需要调用system中的service,所以作者做了一个折衷,把controller抽出来放到应用入口(最高层),其他的就放入到system模块供framework以及其他模块调用。这样做本身没有对错,只不过硬生生的把system功能一分为二缺失了模块化感觉上有那么一点点不完美。
为此,个人提出自己的一点改进方案仅供参考。
首先把framework模块中依赖system的部分接口迁移到system中,让framework不依赖system,而是反过来让system依赖更底层的framework。
其次就是把原来admin中的有关系统通用的controller迁入到system模块中,让system形成一个整体,包含了comtroller,service,mapper,domain这些模块
最后就是依赖传递问题,除framework依赖的common可以传递外,其他任何模块只依赖不传递,然后在应用层(admin)入口pom文件自行依赖需要的模块,这样做更能让你清楚你的应用需要依赖的模块有哪些
改造前后对比: