跟做springboot尚品甄选项目
springboot+vue3
【尚硅谷Java项目《尚品甄选》 SpringBoot+SpringCloud萌新学会企业级java项目】003.后台系统-搭建前端环境(工程创建)_哔哩哔哩_bilibili
E:\project\AllProJect\Shangpin Selection\项目材料素材\课件\尚品甄选项目课件
前端套用框架步骤
位置:E:\project\AllProJect\Shangpin Selection\项目材料素材\资料\资料\04-前端模板
下载依赖
npm
# 将permission.js中的相关代码
# 原代码:import { TOKEN } from '@/store/modules/app' // TOKEN变量名
# 更改为如下代码:
import { TOKEN } from '@/pinia/modules/app' // TOKEN变量名
修改完后,在master目录下开启前端项目
npm start
后端项目搭建步骤
创建项目
删除src目录,因为不写具体代码
创建模块目录
删除common的src,并且新建两个模块
- spzx-parent: 尚品甄选项目的父工程,进行项目依赖的统一管理,打包方式为pom
- spzx-common: 尚品甄选项目公共模块的管理模块,父工程为spzx-parent
- common-util: 工具类模块,父工程为spzx-common
- common-service:公共服务模块,父工程为spzx-common
- spzx-model: 尚品甄选实体类模块
- spzx-manager: 尚品甄选项目后台管理系统的后端服务
下载maven
spzx-parent
在此pom.xml中修改文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.xuan</groupId><artifactId>spzx-parent</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>spzx-common</module><module>spzx-model</module><module>spzx-manager</module></modules><!-- 指定父工程 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version></parent><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><mysql.verison>8.0.30</mysql.verison><fastjson.version>2.0.21</fastjson.version><lombok.version>1.18.20</lombok.version><mybatis.version>3.0.1</mybatis.version></properties><!-- 管理依赖,版本锁定 --><dependencyManagement><dependencies><!-- mybatis和spring boot整合的起步依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.version}</version></dependency><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!--fastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!-- lombok依赖 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency></dependencies></dependencyManagement></project>
spzx-common
pom加入
<dependencies><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.5.2</version></dependency>
</dependencies>
common-util
<dependencies><!-- fastjson依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency><dependency><groupId>com.xuan</groupId><artifactId>spzx-model</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><scope>provided </scope></dependency>
</dependencies>
common-service
在spzx-common下面创建该子模块,并导入如下依赖:
<dependencies><!-- common-util模块 --><dependency><groupId>com.xuan</groupId><artifactId>common-util</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- spzx-model模块 --><dependency><groupId>com.xuan</groupId><artifactId>spzx-model</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- spring boot web开发所需要的起步依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><scope>provided</scope></dependency></dependencies>
spzx-model
- 在spzx-parent下面创建该子模块,并导入如下依赖:
<dependencies><!-- lombok的依赖 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.1.0</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency>
</dependencies>
复制实体类(也可以先不创建)
位置E:\project\AllProJect\Shangpin Selection\项目材料素材\资料\资料\01-实体类
spzx-manager
在spzx-parent下面创建该子模块,并导入如下依赖:
<dependencies><!-- spring boot web开发所需要的起步依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- redis的起步依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- mybatis的起步依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- common-service依赖 --><dependency><groupId>com.xuan</groupId><artifactId>common-service</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.3</version></dependency>
</dependencies>
安装docker
下载虚拟机
VM虚拟机的下载与安装教程_vm下载教程-CSDN博客
新建虚拟机
LinuxVM安装与配置教程:从VMware到Docker与MySQL部署-CSDN博客
看自己笔记安装完了docker继续
如果不知道怎么安装docker可以参照我的笔记
数据库环境准备
本地安装mysql数据库使用的是docker安装,对应的步骤如下所示:
- 部署mysql
开发阶段也可以连接本地mysql服务
# 拉取镜像
docker pull mysql:8.0.30# 创建容器
docker run -d --name mysql -p 3306:3306 -v mysql_data:/var/lib/mysql -v mysql_conf:/etc/mysql --restart=always --privileged=true -e MYSQL_ROOT_PASSWORD=1234 mysql:8.0.30
docker安装完成mysql8,如果使用sqlyog或者navite连接,需要修改密码加密规则,因为低版本客户端工具不支持mysql8最新的加密规则。如果使用客户端连接,需要修改:
- docker exec -it 容器ID bash进入mysql容器
- mysql -uroot -p 登录你的 MySQL 数据库,然后 执行这条SQL:
- exit退出
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1234';
然后再重新配置SQLyog的连接,重新填写密码,则可连接成功了。
把数据库拖入
部署Redis
- 使用docker部署Redis,具体的操作如下所示:
开发阶段也可以连接本地redis服务
#1 拉取镜像
docker pull redis:7.0.10#2 在宿主机的 /var/lib/docker/volumes/redis-config/_data/目录下创建一个redis的配置文件,
vim redis.conf
# 内容如下所示
#开启持久化
appendonly yes
port 6379
# requirepass 1234
bind 0.0.0.0#3 如果/var/lib/docker/volumes没有redis-config,创建数据卷
docker volume create redis-config#4 创建容器
docker run -d -p 6379:6379 --restart=always \
-v redis-config:/etc/redis/config \
-v redis-data:/data \
--name redis redis \
redis-server /etc/redis/config/redis.conf
整合Swagger
Swagger
- Swagger是一种基于OpenAPI规范的API文档生成工具,它可以根据Java代码中的注解自动生成API接口文档,并提供UI界面进行在线测试和调试。
- Swagger为开发人员提供了更加方便、直观的API管理方式,有助于提升API的可读性和可维护性。
- Swagger的主要特点包括:
1、自动生成API文档:通过在Java代码中添加Swagger注解,Swagger能够自动地解析API接口的参数、响应等信息,并生成相应的API文档。
2、在线测试接口:Swagger提供了UI界面,可以方便地进行API接口的测试和调试,无需单独使用HTTP客户端来测试接口。
3、支持多种语言和框架:Swagger不仅支持Java语言和Spring框架,还支持多种其他语言和框架,如PHP、Python、Go等。
4、扩展性强:Swagger提供了多种扩展机制和插件,可以满足各种项目的需要,如集成OAuth2、自定义UI等。
Swagger提供的UI界面相比于另外一款Api文档生成工具Knife4j较为简陋。
Knife4j使用
官方文档使用地址:快速开始 | Knife4j
具体的步骤:
在common-service模块中添加knife4j所需要的配置类
@Configuration
public class Knife4jConfig {@Beanpublic GroupedOpenApi adminApi() { // 创建了一个api接口的分组return GroupedOpenApi.builder().group("admin-api") // 分组名称随便起.pathsToMatch("/admin/**") // 接口请求路径规则要求用admin开头.build();}/**** @description 自定义接口信息*/@Beanpublic OpenAPI customOpenAPI() {return new OpenAPI().info(new Info().title("尚品甑选API接口文档").version("1.0").description("尚品甑选API接口文档").contact(new Contact().name("atguigu"))); // 设定作者}}
启动项目就可以访问到knife4j所生成的接口文档了。访问地址:http://项目ip:端口号/doc.html
常见注解
在Knife4j中也提供了一些注解,让我们对接口加以说明,常见的注解如下所示:
@Tag: 用在controller类上,对controller进行说明
@Operation: 用在controller接口方法上对接口进行描述
@Parameters:用在controller接口方法上对单个参数进行描述
@Schema: 用在实体类和实体类属性上,对实体类以及实体类属性进行描述
举例说明:
@Tag(name = "首页接口")
public class IndexController {@Operation(summary = "用户登录")public Result<LoginVo> login(@RequestBody LoginDto loginDto) {...}@Operation(summary = "用户退出")@Parameters(value = {@Parameter(name = "令牌参数" , required = true)})@GetMapping(value = "/logout")public Result logout(@RequestHeader(value = "token") String token) {...}}@Data
@Schema(description = "用户登录请求参数")
public class LoginDto {@Schema(description = "用户名")private String userName ;@Schema(description = "密码")private String password ;@Schema(description = "提交验证码")private String captcha ;@Schema(description = "验证码key")private String codeKey ;}
导出
Knife4j生成的接口文档是一个在线的接口文档使用起来不是特别的方便,当然Knife4j也支持离线接口文档,并且支持导出json格式的数据,如下所示:
无