day01总览

  1. 1. 1. 技术选型
    1. 1.1. 1.1 用户层
    2. 1.2. 1.2 网关层
    3. 1.3. 1.3 应用层
    4. 1.4. 1.4 数据层
    5. 1.5. 1.5 工具
  2. 2. 2. 开发环境说明
  3. 3. 3.代码开发
    1. 3.1. 注解@RequestBody
    2. 3.2. 注解@Bean
    3. 3.3. Swagger

1. 技术选型

1.1 用户层

系统管理后台前端页面用到H5、Vue.js、ElementUI、apache echarts(展示图表)等技术,移动端用到微信小程序

1.2 网关层

Nginx是一个服务器,主要用来作为Http服务器,部署静态资源,访问性能高。在Nginx中还有两个比较重要的作用: 反向代理负载均衡, 在进行项目部署时,要实现Tomcat的负载均衡,就可以通过Nginx来实现。

1.3 应用层

SpringBoot: 快速构建Spring项目, 采用 “约定优于配置” 的思想, 简化Spring项目的配置开发。

SpringMVC:SpringMVC是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合,可以无缝集成。

Spring Task: 由Spring提供的定时任务框架。

httpclient: 主要实现了对http请求的发送。

Spring Cache: 由Spring提供的数据缓存框架。

JWT: 用于对应用程序上的用户进行身份验证的标记。

阿里云OSS: 对象存储服务,在项目中主要存储文件,如图片等。

Swagger: 可以自动的帮助开发人员生成接口文档,并对接口进行测试

POI: 封装了对Excel表格的常用操作。

WebSocket: 一种通信网络协议,使客户端和服务器之间的数据交换更加简单,用于项目的来单、催单功能实现。

1.4 数据层

MySQL: 关系型数据库, 本项目的核心业务数据都会采用MySQL进行存储。

Redis: 基于key-value格式存储的内存数据库, 访问速度快, 经常使用它做缓存

Mybatis: 本项目持久层将会使用Mybatis开发。

pagehelper: 分页插件。

spring data redis: 简化java代码操作Redis的API。

1.5 工具

git: 版本控制工具, 在团队协作中, 使用该工具对项目中的代码进行管理。

maven: 项目构建工具。

junit单元测试工具,开发人员功能实现完毕后,需要通过junit对功能进行单元测试。

postman: 接口测试工具,模拟用户发起的各类HTTP请求,获取对应的响应结果。

2. 开发环境说明

后端工程结构

序号 名称 说明
1 sky-take-out maven父工程,统一管理依赖版本,聚合其他子模块
2 sky-common 子模块,存放公共类,例如:工具类、常量类、异常类等
3 sky-pojo 子模块,存放实体类、VO、DTO等
4 sky-sever 子模块,后端服务,存放配置文件、Controller、Service、Mapper等

sky-common每个包的作用

名称 说明
constant 存放相关常量类
context 存放上下文类
enumeration 项目的枚举类存储
exception 存放自定义异常类
json 处理json转换的类
properties 存放SpringBoot相关的配置属性类
result 返回结果类的封装
utils 常用工具类

sky-pojo每个包的作用

名称 说明
Entity 实体,通常和数据库中的表对应
DTO 数据传输对象,通常用于程序中各层之间传递数据
VO 视图对象,为前端展示数据提供的对象
POJO 普通Java对象,只有属性和对应的getter和setter

sky-server每个包的作用

名称 说明
config 存放配置类
controller 存放controller类
interceptor 存放拦截器类
mapper 存放mapper接口
service 存放service类
SkyApplication 启动类

sky_take_out11张表的说明

序号 表名 中文名
1 employee 员工表
2 category 分类表
3 dish 菜品表
4 dish_flavor 菜品口味表
5 setmeal 套餐表
6 setmeal_dish 套餐菜品关系表
7 user 用户表
8 address_book 地址表
9 shopping_cart 购物车表
10 orders 订单表
11 order_detail 订单明细表

3.代码开发

注解@RequestBody

  1. @RequestBody 是 Spring MVC 框架中的一个重要注解,主要用于处理 HTTP 请求体中的内容,将其转换为 Java 对象。

  2. 支持的 Content-Type

  • application/json (最常用)
  • application/xml
  • text/plain
  • multipart/form-data
  1. @RequestBody 是 Spring MVC 中处理请求体的核心注解,它:
  • 自动将 JSON/XML 转换为 Java 对象
  • 支持复杂的数据结构和嵌套对象
  • 与验证框架完美集成
  • 提高了开发效率和代码可读性

掌握 @RequestBody 的使用对于开发现代 RESTful API 至关重要。

注解@Bean

  1. @Bean 是 Spring 框架中的一个重要注解,用于方法级别的声明。它告诉 Spring 容器:”这个方法将返回一个对象,该对象应该被注册为 Spring 应用上下文中的 Bean。”

  2. @Bean vs @Component

特性 @Bean @Component
使用位置 方法级别 类级别
控制权 完全控制实例化过程 由 Spring 控制实例化
第三方库 适合配置第三方类 适合自己编写的类
灵活性 更高,可以包含复杂逻辑 相对简单
  1. 最佳实践
  • 在 @Configuration 类中使用:确保 Bean 被正确代理
  • 命名规范:使用明确的 Bean 名称
  • 避免副作用:@Bean 方法应该是幂等的
  • 合理使用条件注解:根据环境条件创建 Bean
  1. @Bean 注解是 Spring 框架中非常强大的工具,它提供了:
  • 灵活的 Bean 定义方式
  • 完整的实例化过程控制
  • 方便的依赖管理
  • 条件化 Bean 创建能力
  • 第三方库集成支持

掌握 @Bean 注解的使用,能够让你更精细地控制 Spring 容器的行为,编写出更加灵活和可维护的应用程序。

Swagger

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(https://swagger.io/)。 它的主要作用是:

  • 使得前后端分离开发更加方便,有利于团队协作
  • 接口的文档在线自动生成,降低后端开发人员编写接口文档的负担
  • 功能测试

Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。

常用注解

注解 属性 说明
@Api tags 用在类上,例如Controller,表示对类的说明
@ApiModel description 用在类上,例如entity、DTO、VO
@ApiModelProperty - 用在属性上,描述属性信息
@ApiOperation value 用在方法上,例如Controller的方法,说明方法的用途、作用