代码规范性思考

表命名和设计

业务模块前缀;下划线分隔,体现业务含义;数据库字符集、字段名、类型、长度、默认值;一对一、一对多、多对多建表;注释清晰;良好的索引;

接口文档

swagger增强工具swagger-bootstrap-ui、Knife4j

通用出入参包装类

RestRequest<T>、RestResponse<T>

入参校验

@Validated注解、分组校验(如果文档严格,可使用不同BO,分组则用不上),可以使用通用嵌套即接口来做分组。

通用BO

详情和删除、批量删除等可采用通用BO,如IdBO、BatchIdBO。同个业务的新增、修改接口字段无变化可使用Upsert。

代码分层架构

基本都是api、common、client、service、business

全局异常及断言

采用全局异常+断言公共类可避免大量if/else和return,提高代码简洁性

公共类

公共类需要规范、审查,并通知到开发人员

关联数据完整性校验

配置后产生关联的关联数据,在入参时与配置做对比,提高系统安全和健壮性。

删除再插入还是区分新增、更新、删除

各有优缺点,个人偏向于后面这种,好处是大部分业务数据是逻辑删除,且业务配置逐渐稳定,一个简单的修改要重新生成所有数据得不偿失,此外还有个好处是更新可控制到字段级别粒度,通过对比新旧字段值来控制是否更新数据。有利于减少数据量和数据库交互次数。

用户信息网关统一赋值

在请求头中设置用户数据

领域模型之核心业务层以及VO、DTO

核心业务层边界理解不够,不作描述。VO好处在于接口文档更清晰和精细数据返回、DTO数据库交互返回,常常替代VO。

实体模型转换

建议使用MapStruct,自动生成转换器,类似手动赋值,无需反射,减少性能损耗

自定义sql还是在业务实现(持久层框架增强工具)

关联表多,可以拿到主体分页数据后再到业务层去查询关联数据赋值。

公共字段赋值方案

有些框架自带,如mybatis-plus。如果使用tk-mybatis这种,要自己到mybais拦截器中实现

出参文档

如果严格的化,每个接口返回定义一个VO或DTO

代码扫描

感觉Alibaba Java Coding Guidelines挺好

缓存

看业务,一般不经常变动的配置类数据容易做缓存

分布式锁

重要操作的接口加上

消息中间件

使用看功能,通常用作服务解偶,异步数据落库

线程池

对于数据量大的,关联表多的业务,通常是提升接口性能的关键点。

接口调试及自测

swagge增强UI中自带,方便。复杂点请求用postman

联调

热部署插件如Jrebel,偶尔出现奇怪的代码异常报错问题。

相关推荐
Jasonakeke14 分钟前
SpringBoot自动配置原理揭秘
java·spring boot·后端
Voicefox声狐15 分钟前
外呼机器人与CRM集成有多难?技术架构对比分析
经验分享
2301_8035389542 分钟前
Java读取Word图片的两种实用方法
java·开发语言·word
C+-C资深大佬1 小时前
SSM 框架(Spring + SpringMVC + MyBatis)
java·spring·mybatis
帅次1 小时前
Android 17 开发者实战:核心更新与应用场景落地指南
android·java·ios·android studio·iphone·android jetpack·webview
Ramble_Naylor1 小时前
东方通(TongWeb)SpringBoot开发指导
java·spring boot
大鹏说大话2 小时前
SQL 排序与分组实战:解决“分组后取最新数据“
android·java·数据库
云烟成雨TD2 小时前
Spring AI Alibaba 1.x 系列【64】 ReactAgent 长期记忆
java·人工智能·spring
quan26312 小时前
20260529,日常开发-数据库主从问题
java·mysql·主从·延迟
JacksonMx2 小时前
@Transactional 最佳实践
java·spring boot·spring·性能优化