Skip to content

Latest commit

 

History

History
228 lines (155 loc) · 6.62 KB

大学仕开发记录.md

File metadata and controls

228 lines (155 loc) · 6.62 KB

大学仕开发记录

3月3日

项目技术选型确定 By PF

  1. 开发工具选择IDEA
  2. 数据库选择Mysql 8.0版本
  3. Tomcat选择9.0版本
  4. nosql采用redis和mongodb
  5. 框架后端选择SpringBoot与Mybatis整合
  6. 框架前端选择Vue.js

3月10日

建立数据库表 By PF&LLY&LYQ

初步确定项目的用户后,建立数据库表,

包括专业表、大学表、学生表、用户表、开设专业表、公司表等

3月17日

项目框架设计 By PF

通过SpringBoot创立了初始的项目框架,采用三层架构的设计模式,创建了以下包与类

  1. controller 创建UserController类
  2. service 具体服务信息
  3. dao 与数据库交互
  4. domain 实体类
  5. utils 相关工具类
  6. VO 视图展示
  7. 起步类SqlworkApplication
  8. 配置文件application.yml

3月21日

热部署 By LYQ

在pom文件中添加devtools的依赖实现热部署

3月22日

整合Mybatis框架 By LYQ

  1. 采用全注解的开发方式
  2. 在pom文件中加入mybatis-spring-starter
  3. 在dao层添加有关增删改查的操作
  4. 在test中对dao层的操作进行测试

3月23日

动态sql的优化 By LYQ

因update语句中涉及到的相关字段过多,采用update书写较为复杂,为简化书写,采用动态sql技术优化

  1. 新建provider包,添加UserProvider类
  2. 在UserProvider类中书写动态sql
  3. 在UserDao中使用UpdateProvider注解

3月26日

开启mybatis中驼峰转换 By LYQ

最开始写了mybatisConfig配置类,后来发现更简单的写法,直接在yml文件中配置即可

3月29日

多对多表的查询 By LYQ

major与university表存在多对多关系,在之前学习mybatis框架中大多采用xml方式进行配置,因项目计划采用纯注解方式,在查阅资料之后对先前的xml配置模式进行修改

  1. 在UniversityDao中使用@Results,@Result,@Many注解
  2. 因为是多对多模式,设置fetchType为延迟加载
  3. 完成接口中sql语句的编写
  4. 在test中测试均通过
  5. 至此,查询学校开设的全部专业和专业开设的相关院校功能已经全部实现

4月1日

添加PageHelper工具类 By LYQ

考虑到项目可能会使用分页技术,添加了分页工具类,此工具类为github上开源代码,以备后续使用

4月6日-4月7日

添加第三方登录功能(微信) By LYQ

查阅微信API,添加微信授权第三方登录功能,因微信公共平台需要认证,只添加了相关代码框架,尚未进行测试,后期依照情况进行取舍

4月12日

完善需求,修改和重新设计部分表 By LYQ

修改了student表,重新设计了user表,添加了graduate表

4月13日

规定前后端交互的数据格式 By PF&LLY&LYQ

经过进一步确定,采用前后端分离的开发模式,依靠Json格式传递数据

  1. 在domain类中添加JsonData类,规定前后端交互的数据格式

  2. 在pom文件中添加gson的依赖,用于解析json数据

4月17日

添加redis缓存 By LYQ

为加快数据库查询速度,减少数据库压力,项目决定整合redis缓存技术

  1. pom文件中加入相关依赖
  2. yml文件中配置redis的参数
  3. 在UserService的findAll中使用redisTemplate

4月19日

双重检测锁 By LYQ

为避免缓存穿透问题,使用双重检测锁机制进行优化

类似于单例模式中的双重检测锁模型,在防止并发问题的同时大限度地保证了性能

4月20日

添加JWT验证 By LYQ

  1. 在pom文件中添加jwt依赖,版本号为0.7.0
  2. 在utils包下添加JwtUtils类
  3. 在test中对JwtUtils进行测试
  4. 在配置文件中对JwtUtils相关参数配置

对用户密码进行加密 By LYQ

  1. 在pom文件中添加spring-security的相关依赖
  2. 在UserService层中修改登录的逻辑,修改原先查询邮箱、密码判断登录的逻辑,改为用encoder比对。
  3. 控制层根据登录成功与否返回JsonData

4月21日

添加拦截器验证token By LYQ

  1. 添加interceptor包
  2. 添加JwtInterceptor类与InterceptorConfig配置类
  3. 使用拦截器验证token

4月22日

修改传参数形式 By LYQ

  1. service层中登录传递的参数由user改为email与password
  2. controller层完善了向前端传递数据的逻辑

4月23日

统一包装交互最外层对象 By LEODPEN

  1. 将jsonData更名并置于VO层
  2. 使用枚举对状态与结果进行封装
  3. 之后返回码遵循Restful接口,但是自定义返回码

5月6日

自定义异常处理 By LYQ

  1. 在controller中添加MyExceptionHandler,对异常进行封装,统一返回Json数据给前端

5月7日

结合SpringCache By LYQ

  1. 针对不同的需求,整合SpringCache与Redis
  2. 用户注册登录,验证码等信息需要设置过期时间,Redis更加方便
  3. 针对缓存查询到的用户信息,使用SpringCache更加简便
  4. 修改ServiceImp内容,分离缓存使用的场景

5月9日

数据校验,分页 By LYQ

  1. 使用pageHelper插件实现分页功能并完成测试
  2. 引入validation依赖,使用JSR进行数据校验

5月10日

Restful风格重构 By LYQ

  1. 对url格式按照Restful风格进行重构
  2. 重写Major、UniversityController并进行测试

5月11日

集成Mongodb数据库 By LYQ

  1. 添加mongodb相关依赖
  2. 新建实体类Discussion,完成基础增删改查操作

5月12日

集成Swagger2 By LYQ

集成Springboot2与Swagger2.9.2时遇到了很多问题

  1. SwaggerConfig中继承WebMvcConfigurer,添加静态文件目录
  2. 拦截器配置中排除相关静态文件的拦截

5月12日

完善注册及异常处理 By PF

  1. 新建邮箱发送code功能完成注册,也可以通过其进行密码重置
  2. 异常抛出示范,返回封装对象规范化
  3. 注册逻辑(register.md中)

5月17日

项目大重构 By LYQ

  1. 统一异常行为MyException及异常处理MyExceptionHandler
  2. 优化domain包下类的setter和getter方法
  3. 命名规范统一、url映射统一
  4. 整合注册与登录功能并进行测试
  5. dao层sql语句编写基本完成

5月18日-5月30日 By LYQ

  1. 重新设计功能与需求

5月31日 By LYQ

  1. 重构后单元测试

6月3日 By PF

  1. 数据展示功能重写,graduateDao层重写或覆盖
  2. JWTUtils异常抛出
  3. 跨域配置, 可开始联调
  4. todo: (gra、stu)controller层改变

技术点

  1. 后端框架:springboot2整合Mybatis
  2. 前端框架:Vue.js
  3. 数据库: mysql、redis、mongodb
  4. 插件:pageHelper、JSR数据校验
  5. 消息队列:
  6. 安全:SpringSecurity结合Jwt
  7. 缓存:SpringCache结合Redis
  8. 文档:swagger2构建Restful API
  9. 第三方集成: