撸一发springboot——项目架构分析(第一篇)

本文分享了SpringBoot项目架构的心得,包括模块分类原则,如基础模块、功能模块和业务模块。强调了common和core模块在解耦中的作用,通过接口实现不同模块间的通信。还介绍了manager层的设计,作为service层之间的交互门面,以提高代码管理效率。同时提醒注意maven配置细节,如relativePath设置和dependencyManagement管理版本号。
摘要由CSDN通过智能技术生成

关于项目架构的一些小心得

1.模块分类原则

模块分为三类,一类是项目的基础模块,包括common和core;一类是功能模块,不涉及任何业务代码,只是单纯的功能实现;一类是业务模块,所有与业务不相干的方法和类不能出现在其中;
这三类模块依赖关系及其功能是这样的:common为通用模块,用于存放DTO和工具类和一些base接口

项目架构技巧:基于common 和core模块 manager层的简单解耦

我的项目是将功能模块和业务模块划分开的;功能模块和功能模块之间原则上应该是松耦合的,既功能模块之间是不相互依赖的,如何能做到呢?
答案是利用好common和core模块,通常的,我们可以将一些公共类放到common中,这样所有模块要使用公共类只要引用common即可;而一些特殊的情况比如 a功能模块需要使用b功能模块的类这种情况如何解决?在core中定义好接口 b的类继承这个接口,然后注入到spring,a从spring中拿这个bean,这样a就不必依赖b,达到解耦的目的。

举例:
现假设有一个redis模块,一个rabbitMQ模块,rabbitMQ模块需要使用redis模块的类;

记住,我们不直接从rabbitMQ中依赖redis(直接依赖的缺点显而易见,移植性很差),我们在core中定义一个接口:

public interface TestRedis{
   }

在redis模块中实现这个接口并注入到spring:

@service
public class testRedisImpl implements TestRedis{
   
}

在rabbitMQ模块中拿这个类:

public class test{
   
   @Autowired
   TestRedis testRedis;
}

这样就比较简单的实现了模块间解耦;

manager层的使用

我的分层原则是service层只能给controller层使用,而manager层出现的目的就是供其他service层使用,就是说service不直接调用service,而是通过manager来做调用;这样做的好处是:

1.manager层相当于一个门面模式,方便代码的统一管理。
2.service层可以只专注于业务逻辑等或功能,以遵循单一职责的原则

我项目中部分功能模块并未完全遵守以上原则,是因为项目早期的架构的时候思路和经验的问题遗留下来的,希望大家注意。

我看过有的项目架构以三层模型来分模块,也就是分成了service模块,controller模块,dao模块等。我觉得这样分模块并未发挥ma

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值