跟做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格式的数据,如下所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/95596.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】创建线程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 文章目录 一、为什么需要线程&#xff1f; 创建线程 示例&#xff1a;计算斐波恩夕法 一、为什么需要线程&#xff1f; 在多核处理器的计算机上&#xff0c;线程可…

HTML应用指南:利用POST请求获取全国九号电动车体验店服务店位置信息

九号公司(Ninebot)作为全球领先的智能短途出行解决方案提供商,始终秉持“智慧移动,愉悦生活”的品牌理念,致力于为个人用户打造安全、智能、时尚的城市出行体验。依托“智能硬件 + 数字服务 + 线下触点”三位一体的战略布局,九号公司已建立起覆盖全国、辐射全球的销售与服…

Kafka面试精讲 Day 4:Consumer消费者模型与消费组

【Kafka面试精讲 Day 4】Consumer消费者模型与消费组 在“Kafka面试精讲”系列的第四天&#xff0c;我们将深入探讨Kafka的核心组件之一——Consumer消费者模型与消费组&#xff08;Consumer Group&#xff09;。这是Kafka实现高吞吐、可扩展消息消费的关键机制&#xff0c;也…

使用 Uni-app 打包 外链地址APK 及 iOS 注意事项

本文详细介绍了如何使用 Uni-app 框架将项目打包为 Android APK 和 iOS 应用&#xff0c;重点讲解了 minSdkVersion、targetSdkVersion 和 abiFilters 的配置&#xff0c;以及 iOS 开发的注意事项。文章还包含了您提供的 WebView 示例代码&#xff0c;并提供了关键的注意事项&a…

异常处理小妙招——3.构造函数的安全第一原则:为什么不在构造函数中抛出异常?

文章目录灾难性的生日派对构造函数&#xff1a;对象的出生证明安全第一&#xff1a;严格的出生检查为什么要在构造函数中严格验证&#xff1f;1. 避免"僵尸对象"2. Fail-Fast&#xff08;快速失败&#xff09;原则现实世界的实践建议1. 使用工厂方法模式2. 使用Build…

iptables 和 ip route

文章目录iptables原理及常用命令表链链表链表总结iptables 常用命令及参数1. 规则管理命令 (Commands)2. 规则匹配参数 (Rule-Specification - Matches)3. 目标动作参数 (Target)命令示例配置流程示例ip route常用命令iptables和ip route的联系实用命令示例对比iptables原理及常…

RPC和HTTP的区别?

RPC和HTTP是两种不同的通信协议&#xff0c;它们在通信方式、性能效率以及灵活性可扩展性等方面存在区别。以下是具体分析&#xff1a; 通信方式 RPC&#xff1a;RPC是基于远程过程调用的二进制协议&#xff0c;它允许客户端像调用本地函数一样调用远程服务器上的函数或方法[2]…

贝叶斯分类(Bayes Classify)

一. 核心思想贝叶斯分类是一类基于贝叶斯定理&#xff08;Bayes Theorem&#xff09;和概率统计的分类算法&#xff0c;核心思想是 “通过已知的先验概率&#xff0c;结合数据的似然性&#xff0c;计算后验概率&#xff0c;最终将样本归为后验概率最高的类别”。它在机器学习、…

怎么熟悉业务,我是做前端的,但对业务了解没有渠道

作为前端开发者&#xff0c;想深入了解业务但“没有渠道”&#xff0c;这是非常普遍的痛点。很多前端同学只接到“切图实现页面”的任务&#xff0c;久而久之就成了“实现工具人”。但业务理解力&#xff0c;恰恰是区分“初级”和“高级”前端的核心分水岭。 好消息是&#xff…

如何批量在PDF文档最后一页盖章?

在面对上百份需要处理的 PDF 文档时&#xff0c;逐个打开文档盖章再进行保存&#xff0c;这些步骤不仅提高我们工作的繁琐&#xff0c;还容易导致处理位置错误或遗漏。那么怎么去将 PDF 文档末页实现批量自动打上电子印章&#xff1f;一般的方式没有办法来满足我们高效率办公的…

Keras/TensorFlow 中 `predict()` 函数详细说明

Keras/TensorFlow 中 predict() 函数详细说明 predict() 是 Keras/TensorFlow 中用于模型推理的核心方法&#xff0c;用于对输入数据生成预测输出。下面我将从多个维度全面介绍这个函数的用法和细节。 一、基础语法和参数 基本形式 predictions model.predict(x,batch_sizeNon…

题解:UVA1589 象棋 Xiangqi

看到代码别急着走&#xff0c;还要解释呢&#xff01;哈哈&#xff0c;知道这个题我是怎么来的吗&#xff1f;和爸爸下象棋20场输17场和2场QWQ于是乎我就想找到一个可以自动帮我下棋的程序&#xff0c;在洛谷上面搜索&#xff0c;就搜索到了这个题。很好奇UVA的为啥空间限制是0…

基于YOLOv11的脑卒中目标检测及其完整数据集——推动智能医疗发展的新机遇!

在当今科技迅速发展的时代&#xff0c;脑卒中作为一种严重威胁人类健康的疾病&#xff0c;其早期的检测和及时的干预显得尤为重要。为此&#xff0c;本项目推出基于YOLOv11的脑卒中目标检测系统&#xff0c;结合完整的数据集&#xff0c;不仅提高了检测的效率&#xff0c;更为医…

sed——Stream Editor流编辑器

文章目录前言一、什么是sed二、sed的原理2.1 sed工作流程的三个步骤2.2 sed的两个重要空间&#xff1a;2.3 sed的具体运作流程三、sed的常见用法3.1 sed的基本格式3.2 常用选项3.3 常用操作3.3.1 基本语法规则3.3.2 常用操作命令3.4 操作用法示例3.4.1 输出符合条件的文本&…

Zotero白嫖腾讯云翻译

Zotero白嫖腾讯云无限制字数翻译 文章目录Zotero白嫖腾讯云无限制字数翻译1、安装插件1、登录腾讯云2、找到访问管理进入3、创建一个子用户4、启用机器翻译功能5、复制秘钥6、设置到Zotero1、安装插件 zotero-pdf-translate&#xff1a;https://github.com/windingwind/zotero…

TCP多进程和多线程并发服务

进程和线程的区别&#xff1a; 详细的可以参考这样文档进程和线程的区别(超详细)-CSDN博客 核心比喻 进程 一个工厂&#xff1a;这个工厂拥有独立的资源&#xff08;厂房、原材料、资金、电力&#xff09;。每个工厂之间是相互隔离的&#xff0c;一个工厂着火…

计算机毕业设计springboot基于Java+Spring的疫苗接种管理系统的设计与实现 基于Spring Boot框架的疫苗接种信息管理系统开发与应用 Java与Spring技术驱动的疫苗接种管理

计算机毕业设计springboot基于JavaSpring的疫苗接种管理系统的设计与实现69geq9 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着信息技术的飞速发展&#xff0c;计算机技术在…

C/C++圣诞树①

写在前面 圣诞节将至&#xff0c;我总想用代码做点什么&#xff0c;来表达对这个温馨节日的敬意。于是&#xff0c;我决定用C语言在控制台中绘制一幅充满节日气氛的圣诞树画面。它不仅有闪烁的雪花、五彩的灯光&#xff0c;还有一颗颗精心雕琢的心形图案&#xff0c;仿佛把整个…

【小白入】显示器核心参数对比度简介

对比度是一个非常核心的显示器参数。下面我们来了解一下。一、核心定义&#xff1a;什么是对比度&#xff1f;显示器的对比度&#xff08;Contrast Ratio&#xff09;是指其最亮状态&#xff08;白色&#xff09;与最暗状态&#xff08;黑色&#xff09;之间的亮度比值。简单来…

【项目】多模态RAG必备神器—olmOCR重塑PDF文本提取格局

【项目】多模态RAG必备神器—olmOCR重塑PDF文本提取格局&#xff08;一&#xff09;olmOCR是什么&#xff1f;&#xff08;二&#xff09;olmOCR 的核心技术&#xff08;1&#xff09;文档锚定技术&#xff08;2&#xff09;微调 7B 视觉语言模型&#xff08;三&#xff09;olm…