瑞吉外卖-day01
课程内容
- 软件开发整体介绍 🍐
- 瑞吉外卖项目介绍 🍐
- 管理端
- 开发环境搭建
- 后台登录功能开发
- 后台退出功能开发
- 完善登录功能
1. 软件开发整体介绍 🍐
软件开发整体介绍
作为一名软件开发工程师,我们需要了解在软件开发过程中的开发流程, 以及软件开发过程中涉及到的岗位角色,角色的分工、职责, 并了解软件开发中涉及到的三种软件环境。那么这一小节,我们将从 三个方面,来整体上介绍一下软件开发。
瑞吉外卖-day05
课程内容
- 管理端
- 新增套餐
- 套餐分页查询
- 删除套餐
- 用户端(app 端)
- 短信发送
- 手机验证码登录
1. 新增套餐
1.1 需求分析
套餐就是菜品的集合。
Spring AOP实现原理
1. 代理模式
程序为什么要代理?
- 说法1:原始对象如果觉得本类上的工作太多,可以通过代理来转移部分职责。
- 说法2:如果不改原始类的代码的情况下,可以使用代理对原始对象的功能进行增强
- 特点:原始对象的什么方法想被增强(被代理),代理类一定要有对应的方法。
代理模式UML 类图如下
类图中虚线箭头表示接口实现
菱形和箭头表示组合(组合:部分和整体的关系,并且生命周期是相同的。例如:人与手)
具体参考uml类图
代理类实现了被代理类的接口,同时与被代理类是组合关系。下面看一下代理模式的实现
Limit限流
1. 定义 Limit 注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Limit {
// 资源名称,用于描述接口功能
String name() default "";
// 资源 key
String key() default "";
// key prefix
String prefix() default "";
// 时间的,单位秒
int period();
// 限制访问次数
int count();
// 限制类型
LimitType limitType() default LimitType.CUSTOMER;
}
AOP打印日志
需求分析
在SpringBoot中使用自定义注解、aop切面打印web请求日志。主要是想把controller的每个request请求日志收集起来,调用接口、执行时间、返回值这几个重要的信息存储到数据库里,然后可以使用火焰图统计接口调用时长,平均响应时长,以便于我们对接口的调用和执行情况及时掌握。
解决方案:
- 使用AOP的环绕通知(around)进行方法进行增强
- 使用自定义注解用来标注那些方法需要增强(非表达式)
SpringAOP
1. 什么是AOP
AOP既面向切面编程,官方定义
面向切面—— Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
AOP可以分离系统的业务逻辑和系统服务(日志,安全等),这个功能我想是不难明白(原理是使用了代理模式
),但关键是为什么要将这两种进行分离呢?或者说这样做有什么好处?
AOP实现防重复提交
1. 需求
需求分析
由于网络加载是比较耗时的操作,如果前端没有控制防重复点击,那么请求就会添加到服务端中。这样就会导致数据库中出现重复数据。
我们可以通过自定义注解@RepeatSubmit
,实现防重复提交
2. 实现步骤
3. 使用方法
在接口方法上添加@RepeatSubmit
注解即可,注解参数说明:
day01——面向对象高级
学习目标
- 静态关键字static 🍐 ✏️
- 修饰成员变量
- 修饰成员方法
- 注意事项
- 设计模式 🍐
- 单例模式
- 饿汉式
- 懒汉式
- 单例模式
- 继承 🍐✏️❤️
- 概念🍐
- 好处🍐
- 权限修饰符✏️
- 方法重写✏️