苍穹外卖学习笔记Day3
文章目录
- 请添加图片描述
- @[toc]
- 今日完结任务
- 今日收获
- 1. 实现了公共字段填充功能
- 2. 实现了文件上传接口
- 拓充知识点
文章目录
- 请添加图片描述
- @[toc]
- 今日完结任务
- 今日收获
- 1. 实现了公共字段填充功能
- 2. 实现了文件上传接口
- 拓充知识点
今日完结任务
- 实现了公共字段填充功能
- 实现了文件上传接口
- 实现了新增菜品接口
- 实现了菜品分页查询接口
- 实现了删除菜品接口
- 实现了修改菜品接口(含根据 id 查询菜品接口)
- 实现了菜品起售停售功能
今日收获
今日的接口主要是学会了对冗余代码进行优化,更加熟练掌握了 OSS 文件上传, Curd 操作几个方面。
1. 实现了公共字段填充功能
在之前的项目开发中,在每一次创建和修改数据时,都要重复的设置修改时间、修改人等字段。这些字段属于公共字段,基于 DRY 原则 (Don’t repeat yourself),我们需要把大量相似的代码进行优化,避免代码的冗余
优化前
此处所使用的思想:AOP 思想
简单来讲,就是把所有需要使用到修改公共字段的方法通过拦截器进行拦截,在通过反射进行赋值
拦截方法:自定义注解,被该注解标记的方法会被拦截器拦截
自定义切面部分代码
使用 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 配置类)
这是因为在项目中会经过开发、测试、维护三个阶段,这三个阶段所使用的数据库等配置类可能不一致,所以 不要在配置类中把配置类写死
这样当我们切换环境时,只需要更改 active 中的配置类即可
引用新的配置类dev(开发测试类)
拓充知识点
什么是逻辑外键?
逻辑外键是指不在数据库层级强制约束 的外键关系,通常通过应用程序或业务逻辑来维护和实现,而不是依赖数据库的外键约束机制。在数据库表设计中,逻辑外键只表示表之间的关系,但没有显式的定义外键约束。逻辑外键的完整性是通过应用层(如代码、业务规则)来保证的。
简单来说,逻辑外键是通过业务层实现手动维护表之间的外键关系,而非依赖数据库的约束,这通常会具备更高的性能,更高的灵活性
什么是硬编码和软编码
硬编码是在程序代码中直接使用固定值,而非采用动态数据的方式。通常情况下,这种方式会使得程序执行效率高,但可维护性差,不便于统一管理和修改,因此,我们通常使用软编码或配置文件的形式。
软编码是将数据从代码中抽离出来,通过常量、配置文件、数据库等方式进行管理,他便于统一管理和修改。
简单来说,就是把可以使用的常量抽取出来,进行统一管理引用