当前位置: 首页 > news >正文

苍穹外卖学习笔记Day3

请添加图片描述

文章目录

    • 请添加图片描述
    • @[toc]
    • 今日完结任务
    • 今日收获
      • 1. 实现了公共字段填充功能
      • 2. 实现了文件上传接口
      • 拓充知识点

今日完结任务

  • 实现了公共字段填充功能
  • 实现了文件上传接口
  • 实现了新增菜品接口
  • 实现了菜品分页查询接口
  • 实现了删除菜品接口
  • 实现了修改菜品接口(含根据 id 查询菜品接口)
  • 实现了菜品起售停售功能

今日收获

今日的接口主要是学会了对冗余代码进行优化,更加熟练掌握了 OSS 文件上传, Curd 操作几个方面。

1. 实现了公共字段填充功能

在之前的项目开发中,在每一次创建和修改数据时,都要重复的设置修改时间、修改人等字段。这些字段属于公共字段,基于 DRY 原则 (Don’t repeat yourself),我们需要把大量相似的代码进行优化,避免代码的冗余
优化前
在这里插入图片描述

此处所使用的思想:AOP 思想
简单来讲,就是把所有需要使用到修改公共字段的方法通过拦截器进行拦截,在通过反射进行赋值
拦截方法:自定义注解,被该注解标记的方法会被拦截器拦截
在这里插入图片描述

自定义切面部分代码
![[切面代码.png]]

使用 AOP 思想的好处就是在不改变原有代码逻辑的情况下,实现了代码优化,对大型项目来说是一个很大的优点

在这个方法中的两个注解:
1.@Target 注解
@Target 是 Java 注解中的元注解,他主要作用是约束注解应用于什么地方(例如一个方法或一个域)
@Target 注解包含一个value 属性,这是一个枚举数组,表示注解作用范围,常见的作用目标

  • @Target (ElementType. TYPE)——接口、类、枚举、注解
  • @Target (ElementType.FIELD)——字段、枚举的常量
  • @Target (ElementType.METHOD)——方法
  • @Target (ElementType.PARAMETER)——方法参数
  • @Target (ElementType.CONSTRUCTOR) ——构造函数
  • @Target (ElementType.LOCAL_VARIABLE)——局部变量
  • @Target (ElementType.ANNOTATION_TYPE)——注解
  • @target (ElementType.PACKAGE)——包,用于记录java文件的package信息

2.@Retention 注解
@Retention 是 Java 注解中的一个元注解,是用来表示注解的生命周期,常见的生命周期

  • RetentionPolicy. SOURCE:注解仅保留在源代码中,当java 文件编译程class 文件就会小时 (主要用于检查性的操作,如@Override,@SuppressWarnings)
  • RetentionPolicy. CLASS:注解保留在class 文件中,在运行时不可见。这是默认的生命周期 (一般用于预处理操作,如 ButterKnife)
  • RetentionPolicy. RUNTIME:注解保存在class 文件中,在运行时也存在(用于需要动态获取注解消息)

2. 实现了文件上传接口

整体的思路是 把图片上传到阿里云 OSS 服务器,利用后端接口 OSS 服务器返回的图片 URL,再返回给前端进行显示

这个接口整体的思路清晰,这里只显示部分代码
在这里插入图片描述

这个接口给我带来的新启发如下
1.不要把配置类写死

在配置类配置相关信息时,应写成$引用的格式 (由 A 配置类引用 B 配置类)
![[配置类.png]]

这是因为在项目中会经过开发、测试、维护三个阶段,这三个阶段所使用的数据库等配置类可能不一致,所以 不要在配置类中把配置类写死
这样当我们切换环境时,只需要更改 active 中的配置类即可

引用新的配置类dev(开发测试类)
![[dev配置类.png]]

拓充知识点

什么是逻辑外键?

逻辑外键是指不在数据库层级强制约束 的外键关系,通常通过应用程序或业务逻辑来维护和实现,而不是依赖数据库的外键约束机制。在数据库表设计中,逻辑外键只表示表之间的关系,但没有显式的定义外键约束。逻辑外键的完整性是通过应用层(如代码、业务规则)来保证的。

简单来说,逻辑外键是通过业务层实现手动维护表之间的外键关系,而非依赖数据库的约束,这通常会具备更高的性能,更高的灵活性

什么是硬编码和软编码

硬编码是在程序代码中直接使用固定值,而非采用动态数据的方式。通常情况下,这种方式会使得程序执行效率高,但可维护性差,不便于统一管理和修改,因此,我们通常使用软编码或配置文件的形式。
![[硬编码.png]]

软编码是将数据从代码中抽离出来,通过常量、配置文件、数据库等方式进行管理,他便于统一管理和修改。
![[软编码.png]]

简单来说,就是把可以使用的常量抽取出来,进行统一管理引用
![[常量类.png]]

http://www.dtcms.com/a/299397.html

相关文章:

  • 6种AI Agent模式详解:从原理到实战应用
  • GRE和MGRE综合实验
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 热词数量分析日期统计功能实现
  • Netty综合案例(下)
  • 人工智能与能源:智慧能源的高效与可持续
  • 2025年入局苹果Vision Pro开发:从零到发布的完整路线图
  • uniapp+vue3——通知栏标题纵向滚动切换
  • 去除视频字幕 4 : 下一步,打算研究 Video Inpainting (视频修复):
  • MongoDB数据库高并发商业实践优化·运行优化之不可使用root账户进行MongoDB运行-优雅草卓伊凡
  • 【LeetCode 热题 100】79. 单词搜索——回溯
  • 《用于几何广义断层触觉传感的图结构超分辨率:在仿人面部的应用》论文解读
  • Linux随记(二十一)
  • COZE官方文档基础知识解读第六期 ——数据库和知识库
  • 【算法】前缀和经典例题
  • RU 19.28安装
  • ubuntu22.04系统 算力4090服务器 病毒防护 查杀等 运维入门(三)clamAV工具离线查杀
  • C 语言详解:特性、应用与发展
  • UniappDay03
  • 港股历史逐笔十档分钟级订单簿行情数据分析
  • ChibiOS深度解析:硬实时内核的全景剖析与FreeRTOS实战对比
  • 前端组件梳理
  • dify前端应用相关
  • Linux进程:系统运行的核心机制
  • Claude Code PowerShell 安装 MCPs 方法:以 Puppeteer 为例
  • 基于深度学习的食管癌右喉返神经旁淋巴结预测系统研究
  • Effective C++ 条款4:确定对象被使用前已先被初始化
  • Java-数构二叉树
  • 学习嵌入式的第三十一天-数据结构-(2025.7.23)网络协议封装
  • epoll_create1函数含义和使用案例
  • 深度解析【JVM】三大核心架构:运行时数据区、类加载与垃圾回收机制