苍穹外卖项目完结

项目导航:gitee链接

历时两周多的苍穹外卖项目终于完结,其实如果没有其他任务的影响,可以更快的,虽然项目简单,但是收获还是很多的。接下来微服务,然后补习一下前端知识,最后毕设开工。

苍穹外卖项目随手记

  • nginx转发与负载均衡
  • 密码MD5加密DigestUitls
  • knife4j依赖Swagger生成接口文档
  • JWT令牌(密匙,时效,用户信息)
  • apifox插件(接口文档)
  • Dao层三分,DTO,VO,POJO
  • 默认值,一般分到constant包中定义常量类,解决硬编码问题
  • BeanUtils类属性拷贝
  • 配置全局捕获异常类,常用来捕获异常返回Result中的错误方法给前端
  • 用ThreadLocal为每个线程提供独立存储空间的原理,Tomcat服务器会为每一次请求提供一个单独的线程,因此可以用来设置当前请求下用户的ID。
  • 重写WebMvcConfigurationSupport中的extendMessageConverters方法可以扩展消息转换器,比如将Java的日期格式序列化为JSON格式数据。实现addInterceptors方法注册自定义拦截器。
  • 切面编程:创建自定义注解,创建切面类(定义切入点方法,定义切面方法,标明通知类型,利用反射机制编写切面方法的逻辑代码)
  • 事务管理:@Transactional注解可以标识事务管理,rollbackFor属性表示何种情况下回滚,propagation属性表示事务传播行为,也就是对于嵌套的语句,外部的语句与其内部调用的语句是否公用一个事务。
  • useGeneratedKeys="true" keyProperty="id ,在 MyBatis 或其类似的持久层框架中,useGeneratedKeys="true" 和 keyProperty="id" 这两个属性经常一起使用,特别是在插入数据(INSERT)时。这两个属性的目的是处理和返回数据库自动生成的主键。
  • 插入删除更新表中的元组时,要考虑清楚该元组关联了哪些表,这些表决定了该表能不能删,表内的元组内的元素变化时哪些表的元组内的元素要一同变化。
  • 在使用<foreach>标签生成动态SQL时,需要注意每一个遍历的集合对象,对数据库中的元素赋值时采用对象.属性的方式。
  • 如果可以尽量保证Controller层方法参数用DTO类型;Service层接口参数类型用DTO类型,返回类型用VO类型;DAO层对数据库操作的接口的参数用Entity类型,返回类型用VO。
  • 一个接口对应一个Controllrt类和一个Service接口,一张表对应一个Mapper接口。
  • 前端如果是用JSON格式封装参数请求后端,而后端必须需要用实体类作为参数接受,哪怕请求体里面的JSON数据只有一个参数。
  • Spring Task任务调度工具,可以按照约定时间自动执行某个代码逻辑,定时任务框架
  • WebScoket协议,一种长连接协议,用于实时通信。
  • Apache POI 用于处理办公软件的数据,如最常用的excel表格,对一些银行业务,商家应收等业务的信息,通过Java代码进行操作。
相关推荐
扫地生大鹏3 分钟前
Mysql-OCP PPT课程讲解并翻译
数据库
掘金-我是哪吒11 分钟前
分布式微服务系统架构第126集:集群,数据库扩展,多节点分布,分库,分表,分片,分表,运维
运维·数据库·分布式·微服务·系统架构
有梦想的攻城狮14 分钟前
spring中的@Lazy注解详解
java·后端·spring
愿你天黑有灯下雨有伞23 分钟前
Spring Boot集成RabbitMQ高级篇:可靠性与性能提升
spring boot·rabbitmq·java-rabbitmq
wangbing112525 分钟前
window server 2012安装sql server2008 r2
数据库
码上飞扬27 分钟前
深入解析MySQL联合查询(UNION):案例与实战技巧
数据库·mysql
Leo.yuan32 分钟前
数据分析怎么做?高效的数据分析方法有哪些?
大数据·数据库·信息可视化·数据挖掘·数据分析
zm1 小时前
网络编程epoll和udp
服务器·网络·数据库
野犬寒鸦1 小时前
Linux常用命令详解(下):打包压缩、文本编辑与查找命令
linux·运维·服务器·数据库·后端·github
什码情况2 小时前
星际篮球争霸赛/MVP争夺战 - 华为OD机试真题(A卷、Java题解)
java·数据结构·算法·华为od·面试·机试