框架的建设思路和组织结构

在大部分互联网公司中,往往会基于主流java开发框架定制出适合自己公司的统一框架。目的是为了统一大家的编码规范、协议规范、技术栈、业务交互规范等,从而提高大家的工作效率。

就像我们当初使用数据库连接一样,一开始我们使用基本的JDBC API,后来我们使用主流的mybatis,再后来spring boot帮我们封装了mybatis-spring-boot-starter组件。使得我们接入数据库越来越方便。

同样,当我们开发一个后端项目时,也会用到不同的中间件,对应的,springboot也帮我们封装了不同的starter组件。

既然springboot已经如此的完善,那我们在定制企业框架时,就不必重复造轮子,直接基于springboot进行二开即可。

那具体应该怎么做呢?

首先:定版本

主要是jdk、springboot、springcloud的版本。

因为笔者当时最稳定的版本是2.6.11.所以后面的介绍都已springboot2为准,对应的jdk8,spring5.

其次:定技术栈

既然定好springboot+springcloud的基石,其他也就是配套的生态。如下为一些常见的配套工具:

代码分支管理:git

私服:nexus

代码仓库:gitlab

数据库:mysql

mq: rocketMQ

缓存:redis

搜索引擎:ES

当然也有一些类似项目管理,需求管理的工具:比如jira/禅道/TAPD(腾讯出品)

最后:定结构

为了让框架具备足够的稳定性和一定扩展性,需要将框架进行解构,具体怎么做呢?

方法1:按照组件类型拆

比如,可以根据框架的层级结构,将其分为:

frame-webweb处理层
frame-middleware中间件处理层
frame-infra基础设施层
frame-constant静态常量
frame-tool常见工具类

类似种种。

其实就是将框架按照功能模块拆分。每个模块基于对应的角色分类。比如frame-infra就是框架的核心层,主要做一些最底层的抽象;frame-web则负责处理接口层出入参处理的部分。

方法2:按照组件粒度拆

mybatis-boot-starter
redis-boot-starter
feign-boot-starter
…………

不同的划分方式都有一定的道理。没有绝对的对与错。这就需要我们有自己的建设标准。

我的建议是:取长补短,找到最适合自己公司规模、业务模式的那种。

玩过俄罗斯方块游戏的都知道,不同的方块占据的空间是不一样的,且有些方块通过对应的凹凸槽设计可以紧密合并。

基于这样的思路,我们将框架设计成如下层级:

其中util类粒度最小,主要存放一些场景工具等,比如类似hutool提供的工具组件;

starter类组件,主要提供一些常见的中间件介入客户端,比如mybatis/redis/es等;

而module组件,则主要基于公司业务应用,进行一些定制化组件的封装,其往往基于starter和util类型组件组合而来。此类组件相比而言不会太多。

接下来,我会基于不同组件,展开具体的实战讲解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值