我的第一个真项目总结

学习java开发有一段时间了,出于

  • 检验学习效果
  • 了解自己目前的水平,和他人的差距
  • 真实的项目开发是什么样的

这几点目的,和一群志同道合的小伙伴共同开发了一个小型的微服务项目。

1. 项目组织架构

项目共同分成了10个服务,前台portal和后台admin交给业务组,剩余8个服务都交由架构组完成。整个开发过程中,架构部分,主动承担了auth部分的搭建、开发;业务部分,负责前台portal信息展示和点赞功能的接口实现,以及win10环境下的ELK日志系统的搭建。

kkb-parent-v2
├── kkb-config -- 配置中心存储配置
├── kkb-admin -- 后台管理系统服务
├── kkb-auth -- 基于Spring Security Oauth2的统一的认证中心
├── kkb-common -- 工具类及通用代码块
├── kkb-gateway -- 基于Spring Cloud Gateway的微服务API网关服务
├── kkb-job -- 分布式调度系统
├── kkb-mbg-plus -- MyBatisGenerator 生成的数据库操作代码模块
├── kkb-monitor -- 基于spring Boot Admin 的微服务监控中心
├──	kkb-portal -- 前台门户系统服务
└── kkb-search -- 基于Elasticsearch的商品搜索系统服务

2. 开发流程

step1 因为需求阶段的工作前期已经做好了,所以最开始就直接开了项目启动会,告知大家整个项目的架构、所用到的技术栈、以及时间节点。并把《产品原型》《需求说明书》发给大家,了解该项目的大体情况,便于确认开发需求。

step2 根据**《产品原型》《需求说明书》**理清楚项目的功能、业务,产出"脑图"。并开会讨论确认大家的理解是否一致,差异点在哪里。与此同时,架构组着手开始业务开发前项目架构的搭建。

step3 业务开发前的设计。产出**《概要设计》、《详细设计》、《数据库设计文档》、《编码规范》**。这是非常重要的一环,会直接影响到正式开发过程中的顺畅程度,是万万急不得的。

step4 业务开发。及时开发前的准备工作做的再好,实际开发的时候也会发现很多最开始没有考虑到的东西。

比如,有些接口的业务太过繁琐、复杂,于是最开始考虑的一个接口,可能就会分成多个接口来实现,前端通过异步请求,获取数据。

又或者,开发过程也会发现表结构设计的不合理之处,有需要增加一些字段,也有些字段冗余,需要考虑删除。

step5 单元测试。遵循由简单到复杂的原则编写测试类,先测试service层的接口,测试通过后,再测试controller层的接口。这也是极为重要的一环,会减少相当一部分的代码bug。

step6 优化。提出方案,再实现。

step7 部署上线。这部分还没开始,后续跟新。
在这里插入图片描述

3. 收获:实践出真知

3.1 开发规范

具体参考 阿里巴巴《Java 开发手册》嵩山版,配合上项目过程中师哥的引导。

正式开发前,其实已经有开始阅读阿里的开发手册,但是并没有特别深的感触,甚至觉得有些枯燥无味。但是,在开发过程中,根据当前遇到的问题,再重新翻阅时,便觉得有趣易懂多了。

  • 数据库设计

在这里插入图片描述

  • 业务架构上
    • controller层:只负责出参、入参,调用service层,返回数据和响应信息给前端,不涉及业务逻辑。

    • service层:继承Iservice,用lamdaquery()条件构造器,stream(),collutil等工具。主要负责业务逻辑的实现、必要的地方增加断言。

    • dao层:继承BaseMapper,不使用xml文件写自定义的方法。

    • domain层:出于安全考虑,需要进行数据验证(属性增加注解实现)。当业务复杂时,可以考虑分层

在这里插入图片描述

一旦分层,就需要注意各层类之间的转换。可以通过@Builder自定义转换方法,也可以通过工具dozer。
  • 异常日志

在这里插入图片描述

  • 单元测试

在这里插入图片描述
并且,单元测试中不准使用 System.out 来进行人肉验证,必须使用 assert 来验证。

3.2 新的知识
  • 数据库:

    • 逻辑删除

    • 乐观锁、悲观锁

    • 主从复制、多数据源

    • redis缓存

  • 日志:

    统一Aop切面实现日志、个别部分通过自定义的日志工具类记录

3.3 体会

麻雀虽小,五脏俱全。这次实战深刻体会到了学习环境和生产环境的差别,也越来越明白“经年累月,不可懈怠”的道理。虽然一开始有很多的技术之前都没有接触过,但是通过参考资料、内部的讨论,也基本能够理解和实现。接下来的日子里,就是将目前接触到的技术好好的消化和吸收,扩展广度的同时,并不断深入,不断的练习!练习!练习!养成良好的阅读习惯,以及记录问题、总结经验的习惯。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值