一图读懂 苍穹外卖
你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的
如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 😄 (^ ~ ^)
想看更多 那就点个关注吧 我会尽力带来有趣的内容
相关xmind文档太大了 发不出来 。掘金搜Qiuer关注评论就能获得啦。
sky-common
constant:存放相关常量类,使用常量类是为了规范开发。做到一处改变处处改变
-
比如公共字段自动填充常量
-
信息提示
-
密码常量等
context:存放上下文类,上下文类就是负责处理一次请求解决不了的事,比如购物车删减功能,前端只把购物车中要删减的东西的id发了过来,但每个人都有独立的购物车,要如何分辨要删除谁购物车中的商品呢?就是靠上下文技术
-
BaseContext:供了一种在多线程环境下存储和访问当前线程中用户ID的机制
-
创建threadLocal对象来进行实现上下文
-
enumeration:项目的枚举类存储
-
枚举是一组常量,目前我的认识中不知道为什么要区分一个常量类和一个枚举类
-
在本项目中用来制作公共字段自动填充的注解取值。
-
exception:存放自定义异常类,定义项目开发所需要的不同的异常类来做到
-
异常类,用于定义项目运行中所遇到的各种情况
-
在本项目中有一个BaseExcepition
-
json:处理json转换的类,用于json和对象互相转换
-
基于jackson将Java对象转为json,或者将json转为Java对象 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象] 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
-
基本固定代码
-
properties:存放SpringBoot相关的配置属性类,比如jwt令牌名
-
该文件主要的作用是使得配置application.yml文件时有代码提示。该类的开发也有一些套路
-
@Component
-
Spring Framework 提供的注解将一个类标识为spring中的bean
-
-
@ConfigurationProperties(prefix = "sky.alioss") 被修饰的类中有: private String endpoint; private String accessKeyId;
-
对应的xml文件: sky: alioss: endpoint: ${sky.alioss.endpoint} access-key-id: ${sky.alioss.access-key-id}
-
该注解提供了这注解来进行对xml文件的配置
-
-
-
@data
-
result:返回结果类的封装
-
统一后端返回结果和分页查询结果
-
Result:该类用于统一后端返回结果,提供了成功有参、成功无参、失败三个结果,继承了Serializable
-
PageResult:本项目有使用PageHelper来进行简化分页查询
-
utils:存放常用工具类
sky-pojo
dto:用于不同层之间传输数据,比如前后端中
-
一样
entity :存放实体类,每个实体类对应数据库中的一张表。
-
实体设计根据每个项目的不同,这里说开发实体的一些套路
-
@Data
-
一个Lombok注解,自动生成构造、get、set等方法
-
-
@Builder
-
一个Lombok注解,它用于生成建造者模式相关的代码。建造者模式是一种设计模式,它通过一个建造者类来创建目标对象,可以通过链式调用设置对象的属性。
-
可以这样构造对象 User user = User.builder() .username("john") .age(30) .build();
-
-
-
@NoArgsConstructor
-
这个注解告诉Lombok生成一个无参构造函数。无参构造函数在很多情况下是必需的,比如使用反射创建对象实例、JPA的实体类
-
-
@AllArgsConstructor
-
这个注解告诉Lombok生成一个包含所有字段的参数的构造函数。
-
-
在类上继承Serializable
-
Serializable是一个标记接口,用于表示类的对象可以序列化,即可以将对象转换为字节序列,以便在网络上传输或存储到持久存储设备上
-
-
vo:常用于在业务逻辑层中传输数据
-
一样,只不过类的属性不完全,适合每个接口的传输
sky-server
annotation
-
存放注解类,本项目建了一个AutoFill接口注解类来实现公共字段自动填充
-
@Target(ElementType.METHOD) 指定该注解应用范围
-
@Retention(RetentionPolicy.RUNTIME) 指定该注解生命周期
-
aspect
-
存放AOP:AOP主要用于解决横向问题,本项目的横向问题是要插入、更新时解决时间记录字段的取值问题
-
我理解的横向问题,就是将一个个业务看做竖着的平行线,这些平行线根据业务逻辑有长有短,它们可能有一些东西是重复的。 而AOP不是竖着的线,是一条横着的线,被这条横着的线交叉到的业务都要执行AOP的代码
-
config:存放配置类
-
OssConfiguration:阿里云OSS对象存储服务
-
RedisConfiguration:reidis简单连接
-
WebMvcConfiguration:web相关组件:关于整个网页的核心构成,比如拦截器、接口文档这类
-
该项目有管理员端的拦截器和用户端的拦截器,在这里注册的拦截器会添加到 Spring MVC 拦截器链中
-
使用了knife4j生成了接口文档,knife4j是swagger的集成
-
-
@Configuration:使用这个注解即可变为配置类
-
@Slf4j:方便生成日志
interceptor:存放拦截器
-
本项目使用jwt对拦截的东西进行校验
controller:控制器,又叫服务层,在项目中U负责URL 映射、请求参数解析、响应内容的构建
service:又叫表示层,用来处理业务逻辑,然后调用mapper层
mapper:又叫持久层,负责与数据库进行交互
SkyApplication:项目启动类,在这里编写一些项目启动的基础操作
-
@SpringBootApplication
-
一个复合注解,包含了以下三个注解的功能:
-
@Configuration:将当前类标记为配置类,用于定义配置信息。 @EnableAutoConfiguration:启用 Spring Boot 的自动配置机制,根据项目的依赖和配置自动配置 Spring 应用。 @ComponentScan:启用组件扫描,自动扫描并注册项目中的 Bean。
-
@EnableTransactionManagement //开启注解方式的事务管理
-
启用注解驱动的事务管理,让 Spring Boot 自动管理事务。通常配合 @Transactional 注解一起使用,在需要事务管理的方法上加上 @Transactional 注解即可实现事务管理。
-
-
@EnableCaching//开启缓存注解
-
启用注解驱动的缓存管理,开启 Spring 的缓存功能,可以使用 @Cacheable、@CachePut、@CacheEvict 等注解来定义缓存行为。需要注意的是,开启缓存功能后,需要在项目中配置缓存的实现,比如使用 Ehcache、Redis 等。
-
handler:全局异常处理
一些通用的
target
-
编译文件
test
-
项目测试文件
pom.xml
-
依赖管理
项目名.iml
-
git生成
- 点赞
- 收藏
- 关注作者
评论(0)