一图读懂 黑马苍穹外卖项目

一图读懂 苍穹外卖项目

  • 相关xmind文档想要的可以评论点个关注 我会发给你
  • 本文档适合正在写苍穹外卖项目的人
  • 本篇文档懂了 那这个项目就没问题了

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: <math xmlns="http://www.w3.org/1998/Math/MathML"> s k y . a l i o s s . e n d p o i n t a c c e s s − k e y − i d : {sky.alioss.endpoint} access-key-id: </math>sky.alioss.endpointaccess−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生成
相关推荐
zopple6 小时前
常见的 Spring 项目目录结构
java·后端·spring
cjy0001118 小时前
springboot的 nacos 配置获取不到导致启动失败及日志不输出问题
java·spring boot·后端
小江的记录本9 小时前
【事务】Spring Framework核心——事务管理:ACID特性、隔离级别、传播行为、@Transactional底层原理、失效场景
java·数据库·分布式·后端·sql·spring·面试
sheji34169 小时前
【开题答辩全过程】以 基于springboot的校园失物招领系统为例,包含答辩的问题和答案
java·spring boot·后端
程序员cxuan9 小时前
人麻了,谁把我 ssh 干没了
人工智能·后端·程序员
wuyikeer10 小时前
Spring Framework 中文官方文档
java·后端·spring
Victor35610 小时前
MongoDB(61)如何避免大文档带来的性能问题?
后端
Victor35611 小时前
MongoDB(62)如何避免锁定问题?
后端
wuyikeer11 小时前
Spring BOOT 启动参数
java·spring boot·后端
子木HAPPY阳VIP12 小时前
Ubuntu 22.04 VMware 设置固定IP配置
人工智能·后端·目标检测·机器学习·目标跟踪