跟做springboot尚品甄选项目

发布于:2025-09-04 ⋅ 阅读:(26) ⋅ 点赞:(0)

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 {

    @Bean
    public GroupedOpenApi adminApi() {      // 创建了一个api接口的分组
        return GroupedOpenApi.builder()
                .group("admin-api")         // 分组名称随便起
                .pathsToMatch("/admin/**")  // 接口请求路径规则要求用admin开头
                .build();
    }

    /***
     * @description 自定义接口信息
     */
    @Bean
    public 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格式的数据,如下所示:


网站公告

今日签到

点亮在社区的每一天
去签到