背景

我们开发人员,基本都是从搬砖的码农做起,但也有非常优秀的人,一直在做中间件或其他底层通用的逻辑。显然,我们大多数都不够优秀。 那针对业务开发的我们也需要提升自己的技能,而不是每天的CURD,为了提升我们自己,所以在我们的日常开发工作中不仅仅完成任务作为目标,至少还有一些目标之外的思维,如

  • 代码阅读性高吗?
  • 代码便于维护或协作吗?
  • 代码会不会冗余?
  • 怎样用更精简的方法实现它呢?
  • 自己有没有重复造轮子呢?
  • ...

如果缺少了这些思维的话,那你适合做管理层。
本文是个总结文,就拿我常在开发中用到的技术展开交流。需要读者点开其他文章依次观看😂

springboot + mvc + mybatisPlus + dubbo + Saas业务

定义通用枚举

  • 通用枚举
    避免魔法值、统一枚举的获取方式

  • springMvc枚举(反)序列化配置
    定义好通用枚举之后也要配置好(反)序列化,mybatisPlus也支持枚举,结合起来。项目当中能够完全避免魔法值的产生

  • 定义一个获取当前环境的枚举的工具类
    这个很有必要,在复杂业务的情况下,不同业务,不同环境下逻辑也不一样。比如说swagger不能在线上开启,热部署禁止在线上使用等

重新加装Mybatis-plus(业务开发必备)

定义代码校验(协作开发必备)

虽然我们有代码分层的设计,但是还是会写出林乱不堪的代码。
如何让别人写出可阅读的代码、可维护的代码呢?如何强制实现代码规范?

  • MybatisPlus语法糖的校验
    我们用mybatisPlus语法糖可代替很多sql。但是保证不了会在别的地方出现。那么如何保证我们sql语法糖的规范统一呢,那就用sql语法糖的校验。
  • 基于Spring的代码分层校验
    领域驱动DDD你应该听过吧?DDD过于抽象,实际项目当中用好DDD并不容易。这样分层更合理,且更容易维护(吸取了DDD的精髓)。

定义统一异常拦截处理类

定义日志打印帮助问题排查

http日志链路追踪
request记录请求体中的数据
dubbo日志链路追踪

定义统一响应包装类

定义swagger通用接口文档

1
2
3
4
5
6
7

<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>

  1. 由于swagger的分组在配置文件中不支持中文,所以我们给他改成中文
  2. 由于我们统一了http最外层的响应包装,swagger是检测不出来的,所以我们要给他加上最外层的响应包装
  3. 由于我们统一了枚举,swagger也是检测不出来的,所以我们要给他加上枚举的注释以及对应的value

危险,集成热部署工具(线上禁止使用)