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格式的數據,如下所示:
無