SpringBoot3?框架快速搭建與項(xiàng)目工程詳解
在后端開(kāi)發(fā)領(lǐng)域,SpringBoot 憑借其 “約定優(yōu)于配置” 的核心思想,極大簡(jiǎn)化了 Spring 應(yīng)用的搭建與開(kāi)發(fā)流程。SpringBoot3 作為其最新穩(wěn)定版本,不僅兼容 Spring 6 的核心特性,還在性能優(yōu)化、原生鏡像支持等方面有顯著提升。本文將從項(xiàng)目搭建、核心配置、分層開(kāi)發(fā)、統(tǒng)一返回與異常處理等維度,詳細(xì)講解 SpringBoot3 項(xiàng)目的構(gòu)建與工程設(shè)計(jì),幫助開(kāi)發(fā)者快速上手。
一、項(xiàng)目整體架構(gòu)設(shè)計(jì)
1. 技術(shù)棧選型
1.1 后端技術(shù)棧
核心框架:SpringBoot3(基于 Java17,簡(jiǎn)化 Spring 配置,提升開(kāi)發(fā)效率)
數(shù)據(jù)持久層:MyBatis-Plus(簡(jiǎn)化 MySQL 操作,提供 CRUD 接口、分頁(yè)插件等)
數(shù)據(jù)庫(kù):MySQL8.0(存儲(chǔ)用戶核心數(shù)據(jù))
工具類:Lombok(簡(jiǎn)化實(shí)體類代碼)、FastJSON(JSON 數(shù)據(jù)序列化 / 反序列化)
接口文檔:Knife4j(基于 Swagger,自動(dòng)生成接口文檔,方便前后端聯(lián)調(diào))
1.2 前端技術(shù)棧
核心框架:Vue3(Composition API 語(yǔ)法,響應(yīng)式更高效)
UI 組件庫(kù):Element-Plus(適配 Vue3 的 UI 組件庫(kù),提供表格、表單、彈窗等常用組件)
網(wǎng)絡(luò)請(qǐng)求:Axios(封裝請(qǐng)求攔截器、響應(yīng)攔截器,統(tǒng)一處理接口請(qǐng)求)
路由管理:Vue Router4(實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)與路由守衛(wèi))
狀態(tài)管理:Pinia(Vue3 官方推薦,替代 Vuex,輕量高效)
2. 架構(gòu)流程圖
前端(Vue3 + Element-Plus)
│
├─ 頁(yè)面組件(用戶列表、新增/編輯彈窗)
├─ 網(wǎng)絡(luò)請(qǐng)求(Axios 封裝)
├─ 路由管理(Vue Router)
└─ 狀態(tài)管理(Pinia)
│
▼
HTTP 請(qǐng)求(RESTful API)
│
▼
后端(SpringBoot3)
│
├─ 控制層(Controller:接收請(qǐng)求、返回響應(yīng))
├─ 服務(wù)層(Service:業(yè)務(wù)邏輯處理)
├─ 持久層(Mapper:MyBatis-Plus 數(shù)據(jù)訪問(wèn))
├─ 實(shí)體層(Entity:數(shù)據(jù)庫(kù)表映射)
├─ 公共組件(統(tǒng)一返回、全局異常處理)
└─ 接口文檔(Knife4j)
│
▼
數(shù)據(jù)庫(kù)(MySQL8.0)3. 核心功能模塊
用戶列表展示:表格形式展示用戶 ID、用戶名、生日、性別、地址等信息,支持分頁(yè)加載
條件查詢功能:根據(jù)用戶名、地址篩選用戶數(shù)據(jù),支持清空查詢條件
新增用戶功能:通過(guò)彈窗表單收集用戶信息,表單校驗(yàn)后提交至后端
編輯用戶功能:回顯選中用戶信息至彈窗,修改后提交更新
刪除功能:支持單條用戶刪除、批量用戶刪除,刪除前彈出確認(rèn)提示
數(shù)據(jù)格式化:對(duì)生日字段進(jìn)行統(tǒng)一格式化(年 - 月 - 日),提升頁(yè)面可讀性
二、IDEA創(chuàng)建Spring Boot

刪除無(wú)用的文件

然后在pom.xml文件當(dāng)中進(jìn)行配置

配置maven

選擇 pom.xml 然后加載依賴

三、Spring boot內(nèi)容簡(jiǎn)介

四、pom.xml文件

spring-boot-dependencies:核心依賴在父工程里面
我們?cè)趯?xiě)或者引入一些SpringBoot依賴的時(shí)候,不需要指定版本
啟動(dòng)器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>啟動(dòng)器:說(shuō)白了就是SpringBoot啟動(dòng)的場(chǎng)景
比如Spring-boot-srarter-web,他會(huì)幫助我們自動(dòng)導(dǎo)入web環(huán)境所有的依賴
SpringBoot會(huì)將所有的功能場(chǎng)景,都變成一個(gè)個(gè)的啟動(dòng)器
我們需要使用的功能,只需要找到他們的啟動(dòng)器便可以進(jìn)行使用

啟動(dòng)成功

加載web啟動(dòng)
<!--加載web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>controller層
@RestController
public class HelloController {
@RequestMapping("/hello")
public String getHello(){
return "Hello world";
}
}配置文件
server.port=8081
訪問(wèn)地址:http://localhost:8081/hello

五、統(tǒng)一返回包裝類 Result

包裝類:作用是統(tǒng)一后端返回的數(shù)據(jù)類型,code 是作為前端判斷請(qǐng)求成功的依據(jù),msg 是錯(cuò)誤的信息,data 是返回給前端的數(shù)據(jù)
public class Result {
private String code;
private Object data;
private String msg;
public static Result success() {
Result result = new Result();
result.setCode("200");
result.setMsg("請(qǐng)求成功");
return result;
}
public static Result success(Object data) {
Result result = new Result();
result.setCode("200");
result.setData(data);
result.setMsg("請(qǐng)求成功");
return result;
}
public static Result error(String msg) {
Result result = new Result();
result.setCode("500");
result.setMsg(msg);
return result;
}
public static Result error(String code, String msg) {
Result result = new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}更改返回的數(shù)據(jù)形式

六、500 錯(cuò)誤:常見(jiàn)的系統(tǒng)的錯(cuò)誤

拋出這些錯(cuò)誤非常不友好,我們應(yīng)該使用統(tǒng)一的處理方式

配置日志
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
@ControllerAdvice("com.qcby.springboot.controller")
public class GlobalExceptionHandler {
private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
@ExceptionHandler(Exception.class)
@ResponseBody // 將result對(duì)象轉(zhuǎn)換成 json的格式
public Result error(Exception e) {
log.error("系統(tǒng)異常", e);
return Result.error("系統(tǒng)異常");
}
}系統(tǒng)異常怎么辦
你得看你的控制臺(tái),然后找到報(bào)錯(cuò)的代碼位置,具體去修正代碼
自定義異常

/**
* 自定義異常
* 運(yùn)行時(shí)異常
*/
public class CustomerException extends RuntimeException {
private String code;
private String msg;
public CustomerException(String code, String msg) {
this.code = code;
this.msg = msg;
}
public CustomerException(String msg) {
this.code = "500";
this.msg = msg;
}
public CustomerException() {}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}最終版全局異常
/**
* 全局異常捕獲器
* @ControllerAdvice("com.qcby.springboot.controller")
* 指定該全局異常處理器作用于 com.qcby.springboot.controller 包下的控制器。
*/
@ControllerAdvice("com.qcby.springboot.controller")
public class GlobalExceptionHandler {
private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
/**
* 全局異常捕獲器
* @param e
* @return
*/
@ExceptionHandler(Exception.class)
@ResponseBody // 將result對(duì)象轉(zhuǎn)換成 json的格式
public Result error(Exception e) {
log.error("系統(tǒng)異常", e);
return Result.error("系統(tǒng)異常");
}
/**
* 自定義異常捕獲器
* @param e
* @return
*/
@ExceptionHandler(CustomerException.class)
@ResponseBody // 將result對(duì)象轉(zhuǎn)換成 json的格式
public Result customerError(CustomerException e) {
log.error("自定義錯(cuò)誤", e);
return Result.error(e.getCode(), e.getMsg());
}
}測(cè)試自定義異常
controller測(cè)試接口
@GetMapping("/admin")
public Result admin(String name) {
String admin = adminService.admin(name);
return Result.success(admin);
}service
package com.example.service;
import com.example.exception.CustomerException;
import org.springframework.stereotype.Service;
@Service
public class AdminService {
public String admin(String name) {
if ("admin".equals(name)) {
return "admin";
} else {
throw new CustomerException("賬號(hào)錯(cuò)誤");
}
}
}到此這篇關(guān)于SpringBoot3 框架快速搭建與項(xiàng)目工程詳解的文章就介紹到這了,更多相關(guān)SpringBoot內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Maven和SpringBoot搭建客戶數(shù)據(jù)清洗項(xiàng)目框架
- 如何通過(guò)maven最快搭建Springboot項(xiàng)目
- 手把手教你如何在idea中搭建SpringBoot項(xiàng)目
- Java搭建一個(gè)springboot3.4.1項(xiàng)目?JDK21的詳細(xì)過(guò)程
- Springboot分模塊項(xiàng)目搭建的實(shí)現(xiàn)
- SpringBoot之如何搭建SpringBoot+Maven項(xiàng)目
- 一文教你學(xué)會(huì)搭建SpringBoot分布式項(xiàng)目
- 搭建SpringBoot項(xiàng)目三種方式(圖文教程)
- 一個(gè)簡(jiǎn)單的SpringBoot項(xiàng)目快速搭建詳細(xì)步驟
相關(guān)文章
java實(shí)現(xiàn)定制數(shù)據(jù)透視表的示例詳解
數(shù)據(jù)透視表(Pivot?Table)是一種數(shù)據(jù)分析工具,通常用于對(duì)大量數(shù)據(jù)進(jìn)行匯總、分析和展示,本文主要介紹了如何使用Java將計(jì)算項(xiàng)添加到數(shù)據(jù)透視表中,感興趣的可以了解下2023-12-12
Json字符串轉(zhuǎn)Java對(duì)象和List代碼實(shí)例
這篇文章主要介紹了Json字符串轉(zhuǎn)Java對(duì)象和List代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
java通過(guò)反射創(chuàng)建對(duì)象并調(diào)用方法
這篇文章主要介紹了java通過(guò)反射創(chuàng)建對(duì)象并調(diào)用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
Java學(xué)習(xí)手冊(cè)之Filter和Listener使用方法
這篇文章主要介紹了Java學(xué)習(xí)手冊(cè)之Filter?和?Listener使用方法的相關(guān)資料,Filter是一種攔截器,可以在請(qǐng)求到達(dá)Servlet之前或響應(yīng)返回客戶端之前對(duì)請(qǐng)求和響應(yīng)進(jìn)行攔截和處理,Listener用于監(jiān)聽(tīng)JavaWeb應(yīng)用中的各種事件,需要的朋友可以參考下2025-04-04
使用Java代碼進(jìn)行因數(shù)分解和求最小公倍數(shù)的示例
這篇文章主要介紹了使用Java代碼進(jìn)行因數(shù)分解和求最小公倍數(shù)的示例,都是基于最基礎(chǔ)的算法原理實(shí)現(xiàn),需要的朋友可以參考下2015-11-11
springboot項(xiàng)目賬戶注冊(cè)邏輯功能實(shí)現(xiàn)
這篇文章主要介紹了springboot項(xiàng)目賬戶注冊(cè)邏輯功能實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-12-12
深入理解Java設(shè)計(jì)模式之簡(jiǎn)單工廠模式
這篇文章主要介紹了JAVA設(shè)計(jì)模式之簡(jiǎn)單工廠模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下2021-11-11

