Java开发框架组件的架构设计

一、背景

        开发团队在开发过程中,经常遇到人员的流动的情况,再加上团队成员的开发经验也不同,所以不同的成员对开发过程中如何解决问题的看法和思路也存在在差异。这导致最后团队产出的交付成果物,即软件,不同功能的稳定性不同,代码书写逻辑差异,最后随着时间越久,代码逻辑很重的部分功能,难以维护,基本上就会出现“谁维护,谁掉坑”的情况。2017年3月1日百度移动搜索宕机半小时,就是因为一个前端开发工程师修改了一段放置了很久的代码导致的。开发过程中对开发的稳定性要求越来越高。

       现在采用微服务架构,多团队合作开发,团队内部内勤+外包模式,团队越来越多,同时项目上线期限紧,往往一个月或者两个月就要出一个新系统,开发快速性要求越来越高。

       团队中新人加入,有相应的老员工带领也往往需要磨合1-2个月甚至更久才可以熟悉了解业务,熟练掌握相关开发技术,新员工的快速掌握和加入开发也对开发体系有更高的要求。

       基于一种思路:就像一个人的书桌,每层摆满了各类书籍,即使放置的再乱,自己每天取书读,并且放回去,下次闭着眼睛也能准确的找到上次看的书或者自己想找的书。突然有人看了他的书后,经常会发生,这个人找不到自己的书了,他不知道被放在哪里了。其实书桌就是一个系统或平台的架构,而书桌上的书放置的位置就是“约定、规则、共识”,只要大家都知道了这个“约定、规则、共识”,不管谁动了自己的书,我们都还是能轻松的找到它。

       这个统一的“约定、规则、共识”,团队成员都了解,都能很好地遵守,这样每个成员在看别人的代码的时候,就和在看自己写的代码一样,而且有了公共的约定,也提高了程序的稳定性。

二、解决方案

1.前端工程

xxx-yyy-web:前端代码目录及命名规范、使用组件规范,保持统一的规范体系;

2.前端框架

mdd-ui:前端核心框架在样式、javaScript及组件方面保持统一的基础框架;

3.领域服务

 xxx-yyy-domain: 领域服务规范化包路径及文件名等信息,保持统一的规范体系;

4.后端框架 

  tksf-framework-sdk:后端核心框架在通用工具类、主数据缓存、会话缓存以及切面处理日志等机制;

三、框架选择

• 表现层:Vue

• 服务层:SpringBoot、Mybatis、mybatisPlus

• 数据层:Mysql、mongo、Redis、elasticSearch

四、框架架构设计

五、组件介绍

01.通用组件类别

  • 通用工具

序号

类别

类名

名称

1

日期

DateUtil

日期工具类

2

日期

DateUtils

日期工具类

3

文件操作

BufferedImageUtil

图像处理工具类

4

文件操作

ByteUtil

图像字节工具类

5

文件操作

ValidateCodeUtils

生成验证码工具类

6

文件操作

VerificationCodeTool

汉字加减乘除验证码生成工具

7

Java对象

DesensitizedUtils

脱敏工具类

8

Java对象

HanToWB

汉字转五笔工具类

9

Java对象

MapUtils

map操作工具类

10

Java对象

ObjectUtils

object操作工具类

11

Java对象

PatternUtil

正则表达式工具类

12

Java对象

Pyjc

拼音简写工具类

13

Java对象

StringUtil

字符串工具类

14

Java对象

StringUtils

字符串工具类

15Java对象TranslationSpcilStr字符串转译工具类
16Java对象VoPoConverter对象转换工具类
17

log日志

LogUtil

日志操作工具类
18osIPUtilIP操作工具类

19

poi

HuToolExcelUtils

excel操作工具类

20

poi

ExcelUtils

excel操作工具类

21安全

Base64Util

Base64对称加密工具类
22安全CryptAESAES加解密工具类
23安全DesUtilDES加解密工具类
24安全MD5UtilMD5加密工具类
25安全RSAUtilRSA加解密工具类

26

url

UrlUtil

URL操作工具类

  • 2.搜索引擎(ElastcSearch)

序号

名称

说明

序号

名称

说明

1
EsUtil
es操作工具类

  • 3.mongoDb

序号

名称

说明

1
MongoUtil
mongo操作工具类

  • redis

序号

名称

说明

1RedisKVUtilredis键值对缓存服务工具类
2RedisHashUtilredis的hash缓存服务工具类

 02.支撑类组件类别

  • 验证码类captcha

序号

说明

1

ValiMageUtil

图形验证码处理类

  • 主数据字典类(master)

序号

方法名

能力

1

MasterUtil

主数据字典处理类

  • 用户user类

序号

方法名

能力

1
UserSessionUtil
用户会话操作工具类

03.核心组件类别

  • aop切面

序号

分类

能力

详细

1请求拦截器token认证拦截器自动拦截请求头中包含token令牌的服务的token是否有效
2持久层拦截器基础模型字段自动填充机制在新增和修改服务时,实现自动完成创建者、创建时间、更新者、更新时间的信息自动补充机制
3响应拦截器主数据编码转名称机制自动拦截请求返回的消息,依据主数据的编码信息自动补充主数据名称信息
4请求拦截器主数据值域自动校验机制自动拦截请求参数中某主数据字段的内容是否在主数据值域内
5请求拦截器java异常处理机制实现java异常以及业务异常的统一捕捉能力
6请求拦截器日志自动记录处理机制实现java异常和业务异常以及服务的正常访问进入和返回时正常日志的处理
7持久层拦截器拼音简称自动生成机制实现在新增服务时,可以自动生成拼音简称信息
8响应拦截器脱敏信息自动处理机制实现请求响应时,脱敏信息自动处理机制
9请求拦截器分页page自动初始化机制实现自动拦截查询分页类请求,自动进行page初始化;根据pageInitFlag进行初始化可控
10响应拦截器商品编码转名称机制自动拦截请求返回的消息,依据商品的编码信息自动补充商品名称信息
11请求拦截器授权系统自动拦截机制自动拦截请求服务是否在授权范围内的系统的机制
12请求拦截器消息头可控拦截机制实现自动根据控制参数拦截消息头是否必传机制
13响应拦截器

接口返回信息编码转名称控制标签

属于性能优化类,可实现服务提供者控制提供的服务是否提供编码转名称职责
14响应拦截器

结果返回编码转名称时,不转换list控制标签

属于性能优化类,可实现自动拦截返回信息中过滤掉不需要转换的list的遍历消耗
  • 公共Bean

序号

名称

描述

1Result统一返回结果bean
2PageBean统一分页信息bean

  • 业务信息类

序号

分类

名称

描述

1异常类ErrorHandler.reportError("1212")抛出业务异常方法
2编码转名称code2NameMain(vo)编码转名称方法

  • 标签

序号

名称

描述

1

BaseModelLabel

UPDATE

更新标签

2

BaseModelLabel

REGISTER

注册标签

3

Code2NameLabel

主数据编码转名称标签

4

InterfaceApiLabel

接口API定义标签

5

MatserValidateLabel

主数据值域校验标签

6

Code2NameMarkLabel

编码转名称嵌套VO标志标签

7

DesensitizedLabel

脱敏标签

8

PyjcLabel

拼音简称标签

9

DesLabel

des加密标签
10

DesDecryptLabel

des解密标签
11

Md5Label

md5加密标签
12

UUIDLabel

uuid标签

  • 消息机制

序号

描述

1

MessageReader

公共和私有消息配置文件加载类

2public.properties公共配置文件

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0海滨小城0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值