Java项目-苍穹外卖_Day1
2024-8-8
| 2024-8-8
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
项目来源:
黑马程序员 Java项目实战《苍穹外卖》】
@ZZHow(ZZHow1024)

软件开发整体介绍

  • 软件开发流程
    • 需求分析:需求规格说明书、产品原型。
    • 设计:UI 设计、数据库设计、接口设计。
    • 编码:项目代码、单元测试。
    • 测试:测试用例、测试报告。
    • 上线运维:软件环境安装、配置。
  • 角色分工
    • 项目经理:对整个项目负责,任务分配、把控进度。
    • 产品经理:进行需求调研,输出需求调研文档、产品原型等。
    • UI 设计师:根据产品原型输出界面效果图。
    • 架构师:项目整体架构设计、技术选型等。
    • 开发工程师:代码实现。
    • 测试工程师:编写测试用例,输出测试报告。
    • 运维工程师:软件环境搭建、项目上线。
  • 软件环境
    • 开发环境(development):开发人员在开发阶段使用的环境,一般外部用户无法访问。
    • 测试环境(testing):专门给测试人员使用的环境,用于测试项目,一般外部用户无法访问。
    • 生产环境(production):又称线上环境,正式提供对外服务的环境。

开发环境搭建

  • 整体结构:
    • 前端:管理端(Web)、用户端(小程序)
    • 后端:后端服务(Java)
  • 前端工程基于 Nginx 运行
  • 后端工程:
    • 基于 Maven 进行项目构建,并进行分模块开发。
    • 目录结构:
      • 序号
        名称
        说明
        1
        sky-take-out
        Maven 父工程,统一管理依赖版本,聚合其他子模块
        2
        sky-common
        子模块,存放公共类,例如:工具类、常量类、异常类等
        3
        sky-pojo
        子模块,存放实体类、VO、DTO 等
        4
        sky-server
        子模块,后端服务,存放配置文件、Controller、Service、Mapper 等
    • pojo 模块详细说明
      • 名称
        说明
        Entity
        实体,通常和数据库中的表对应
        DTO
        数据传输对象,通常用于程序中各层之间传递数据
        VO
        视图对象,为前端展示数据提供的对象
        POJO
        普通 Java 对象,只有属性和对应的 getter 和 setter
    • 使用 Git 进行版本控制
    • 数据库环境搭建
      • 序号
        表名
        中文名
        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
        订单明细表
  • 前后端联调
    • 后端初始工程中已实现的登录功能:
      • Browser
      • Controller
          1. 接收并封装参数。
          1. 调用 service 方法查询数据库。
          1. 封装结果并响应。
      • Service
          1. 调用 mapper 查询数据库。
          1. 密码比对。
          1. 返回结果。
      • Mapper
          1. select * from `employee` where `username`=?
      • Database
    • Nginx 反向代理:将前端发送的动态请求由 Nginx 转发到后端服务器。
      • 好处:
        • 提高访问速度。
        • 进行负载均衡。
        • 保证后端服务安全。
      • 负载均衡:把大量的请求按照指定的方式均衡的分配给集群中的每台服务器。
      • 配置方式:
        • 在 nginx.conf 配置文件中配置
          • 反向代理
          • 负载均衡(基于反向代理)
    • Nginx 负载均衡策略:
      • 名称
        说明
        轮询
        默认方式
        weight
        权重方式,默认为 1,权重越高,被分配的客户端请求就越多
        ip_hash
        依据 IP 分配方式,这样每个访客可以固定访问一个后端服务
        least_conn
        依据最少连接方式,把请求优先分配给连接数少的后端服务
        url_hash
        依据 URL 分配方式,这样相同的ur\会被分配到同一个后端服务
        fair
        依据响应时间方式,响应时间短的服务将会被优先分配
  • 完善登录功能
    • 当前问题:员工表中的密码是明文存储,安全性太低。
    • 步骤:
        1. 修改数据库中明文密码,改为 MD5 加密后的密文。
        1. 修改 Java 代码,前端提交的密码进行MD5加密后再跟数据库中密码比对(使用 Spring 提供的工具类 DigestUtils)。

    导入接口文档

    • 前后端分离开发流程
      • 前后端分离开发流程
        前后端分离开发流程
    • 导入 Yapi 平台

    Swagger

    • 使用:Knife4j 是为 Java MVC 框架集成 Swagger 生成 API 文档的增强解决方案。
        1. 在 pom.xml 中添加 Maven 坐标。
        1. 在 WebMvcConfiguration 配置类中加入 knife4j 相关配置。
        1. 在 WebMvcConfiguration 配置类中设置静态资源映射,否则接口文档页面无法访问。
    • Yapi 对比 Swagger
      • Yapi 是设计阶段使用的工具,管理和维护接口。
      • Swagger 在开发阶段使用的框架,帮助后端开发人员做后端的接口测试。
    • 常用注解:
      • 通过注解可以控制生成的接口文档,使接口文档拥有更好的可读性。
      • 注解
        说明
        @Api
        用在类上,例如 Controller,表示对类的说明
        @ApiModel
        用在类上,例如 entity、DTO、VO
        @ApiModelProperty
        用在属性上,描述属性信息
        @ApiOperation
        用在方法上,例如Controller的方法,说明方法的用途、作用
  • Java
  • 项目
  • 学技术
  • Java项目-苍穹外卖_Day2Vue2+Vue3前端开发_Day12-Day14_大事件管理系统
    Loading...
    目录