Mall项目的学习

一.学习目标

这个开源项目的学习价值在于通过项目学习技术,因为业务逻辑和场景会一直变化,但是技术的应用一般变化不大。

二.如何学习

学习这个项目首先对项目架构总览,制导这些框架的功能,以及这些框架之间如何协同工作。画出来这些整个的数据流图,项目的UML图,各种系统建模图,描述各个功能在具体过程中如何应用到。大概就是按照软件工程的过程来学习研究这个项目,最终动手去搭建环境,和具体源代码的查看。

三.学习进度

学习的内容首先学习后端相关的项目功能及其技术。

每天有一定的时间查看项目的微信公众号,然后一部分的时间用来学习软件工程的过程。

四.学习任务

提前学习常用工具:

1.maven的使用,因为自己找和下载jar包很麻烦。

2.docker

3.git

4.idea


                                Guide项目学习五步走

第一步:了解业务

1.mall是一个电商系统,包括前台商城系统和后台管理系统。基于SpringBoot+MyBatis实现,采用Docker容器化部署。

主要面向的人群是:

2.主要功能:

前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。

后台管理系统包含商品管理,订单管理,会员管理,促销管理,运营管理

内容管理、权限管理等模块。

3.项目背景

4.涉及的关键业务流程是什么

5.项目目前面临的挑战是什么,未来的规划是什么?

技术本身是为了业务服务,了解了业务就入门了项目。

第二步:搭建项目开发环境

包含了SpringBoot+ MyBatis的搭建基本骨架,Swagger-UI实现在线文档

整合Redis实现缓存功能

整个SpringSecurity和JWT实现认证和授权

SpringTask实现定时任务

Elasticsearch实现商品搜索

Mongodb实现文档操作

RabbitMQ实现延迟消息

OSS实现文件上传

可以参考在windows环境上的部署过程,需要下载用到的技术框架

在linux环境下部署,是基于Docker容器

部署完成后就可以在电脑上运行了

第三步: 看项目技术架构

直接看项目的相关依赖,Maven项目的话,看pom.xml,

如果是Gradle项目看build.gradle

1.项目最底层的框架是SpringBoot

2.项目中依赖的包是MyBatis(MyBatis Generator 是什么关系呢)

3.项目中用到的数据库是MySQL

4.用到了Redis缓存 ,有没有用本地缓存呢,项目中用缓存作用是啥呢

5.项目中用到了消息队列RabbitMQ

6.项目中的权限管理是怎么做的呢

第四步: 看项目的代码结构

项目的代码结构是怎么划分的

常见的三层模型

1.Repository(数据库操作)

2.Service(业务操作)

3.Controller(数据交互)

DDD分层架构

1.User Interface(用户界面层)

2.Application(应用层)

3.Domain(模型层)

4.Infrastructure(基础设施层)

第五步: 从功能主线/问题出发研究项目源码

通过Debug调试,研究项目核心代码逻辑,

通过一个功能主线(Dubbo是如何暴露服务的?)

或者SpringBoot自动配置原理?出发

找到对应API调用方式的Demo,然后根据Demo中的方法调用来研究整个过程。

在网上看别人的分析。


                               项目经历4个小技巧

1.提前搞清楚项目的架构图,技术选型等

2.提前想好项目的亮点,针对项目涉及的关键技术进行深度复习。

3.引导面试官问你熟悉的技术。

4.突出个人贡献,比如自己在项目中解决了什么问题,而不是叙述自己做了什么。

你可能感兴趣的:(java)