最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot3?框架快速搭建與項(xiàng)目工程詳解

 更新時(shí)間:2026年02月12日 10:03:48   作者:一直都在572  
本文將從項(xiàng)目搭建、核心配置、分層開發(fā)、統(tǒng)一返回與異常處理等維度,詳細(xì)講解SpringBoot3項(xiàng)目的構(gòu)建與工程設(shè)計(jì),幫助開發(fā)者快速上手,感興趣的朋友跟隨小編一起看看吧

在后端開發(fā)領(lǐng)域,SpringBoot 憑借其 “約定優(yōu)于配置” 的核心思想,極大簡化了 Spring 應(yīng)用的搭建與開發(fā)流程。SpringBoot3 作為其最新穩(wěn)定版本,不僅兼容 Spring 6 的核心特性,還在性能優(yōu)化、原生鏡像支持等方面有顯著提升。本文將從項(xiàng)目搭建、核心配置、分層開發(fā)、統(tǒng)一返回與異常處理等維度,詳細(xì)講解 SpringBoot3 項(xiàng)目的構(gòu)建與工程設(shè)計(jì),幫助開發(fā)者快速上手。

一、項(xiàng)目整體架構(gòu)設(shè)計(jì)

1. 技術(shù)棧選型

1.1 后端技術(shù)棧

核心框架:SpringBoot3(基于 Java17,簡化 Spring 配置,提升開發(fā)效率)

數(shù)據(jù)持久層:MyBatis-Plus(簡化 MySQL 操作,提供 CRUD 接口、分頁插件等)

數(shù)據(jù)庫:MySQL8.0(存儲(chǔ)用戶核心數(shù)據(jù))

工具類:Lombok(簡化實(shí)體類代碼)、FastJSON(JSON 數(shù)據(jù)序列化 / 反序列化)

接口文檔:Knife4j(基于 Swagger,自動(dòng)生成接口文檔,方便前后端聯(lián)調(diào))

1.2 前端技術(shù)棧

核心框架:Vue3(Composition API 語法,響應(yīng)式更高效)

UI 組件庫:Element-Plus(適配 Vue3 的 UI 組件庫,提供表格、表單、彈窗等常用組件)

網(wǎng)絡(luò)請(qǐng)求:Axios(封裝請(qǐng)求攔截器、響應(yīng)攔截器,統(tǒng)一處理接口請(qǐng)求)

路由管理:Vue Router4(實(shí)現(xiàn)頁面跳轉(zhuǎn)與路由守衛(wèi))

狀態(tài)管理:Pinia(Vue3 官方推薦,替代 Vuex,輕量高效)

2. 架構(gòu)流程圖

前端(Vue3 + Element-Plus)
    │
    ├─ 頁面組件(用戶列表、新增/編輯彈窗)
    ├─ 網(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ù)訪問)
    ├─ 實(shí)體層(Entity:數(shù)據(jù)庫表映射)
    ├─ 公共組件(統(tǒng)一返回、全局異常處理)
    └─ 接口文檔(Knife4j)
        │
        ▼
數(shù)據(jù)庫(MySQL8.0)

3. 核心功能模塊

用戶列表展示:表格形式展示用戶 ID、用戶名、生日、性別、地址等信息,支持分頁加載

條件查詢功能:根據(jù)用戶名、地址篩選用戶數(shù)據(jù),支持清空查詢條件

新增用戶功能:通過彈窗表單收集用戶信息,表單校驗(yàn)后提交至后端

編輯用戶功能:回顯選中用戶信息至彈窗,修改后提交更新

刪除功能:支持單條用戶刪除、批量用戶刪除,刪除前彈出確認(rèn)提示

數(shù)據(jù)格式化:對(duì)生日字段進(jìn)行統(tǒng)一格式化(年 - 月 - 日),提升頁面可讀性

二、IDEA創(chuàng)建Spring Boot

刪除無用的文件

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

配置maven

選擇 pom.xml 然后加載依賴

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

四、pom.xml文件

spring-boot-dependencies:核心依賴在父工程里面

我們?cè)趯懟蛘咭胍恍㏒pringBoot依賴的時(shí)候,不需要指定版本

啟動(dòng)器

 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter</artifactId>
</dependency>

啟動(dòng)器:說白了就是SpringBoot啟動(dòng)的場景

比如Spring-boot-srarter-web,他會(huì)幫助我們自動(dòng)導(dǎo)入web環(huán)境所有的依賴

SpringBoot會(huì)將所有的功能場景,都變成一個(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

訪問地址: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ò)誤:常見的系統(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());
    }
}

測試自定義異常

controller測試接口

@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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談MyBatis通用Mapper實(shí)現(xiàn)原理

    淺談MyBatis通用Mapper實(shí)現(xiàn)原理

    這篇文章主要介紹了淺談MyBatis通用Mapper實(shí)現(xiàn)原理,本文會(huì)先介紹通用 Mapper 的簡單原理,然后使用最簡單的代碼來實(shí)現(xiàn)這個(gè)過程。感興趣的小伙伴們可以參考一下
    2018-10-10
  • 詳解Java并發(fā)包基石AQS

    詳解Java并發(fā)包基石AQS

    Java并發(fā)包(JUC)中提供了很多并發(fā)工具,這其中,很多我們耳熟能詳?shù)牟l(fā)工具,譬如ReentrangLock、Semaphore,它們的實(shí)現(xiàn)都用到了一個(gè)共同的基類--AbstractQueuedSynchronizer,簡稱AQS。本文將從幾個(gè)方面來詳細(xì)介紹:基本實(shí)現(xiàn)原理、自定義同步器、源碼分析
    2021-06-06
  • Java中的CAS鎖機(jī)制(無鎖、自旋鎖、樂觀鎖、輕量級(jí)鎖)詳解

    Java中的CAS鎖機(jī)制(無鎖、自旋鎖、樂觀鎖、輕量級(jí)鎖)詳解

    這篇文章主要介紹了Java中的CAS鎖機(jī)制(無鎖、自旋鎖、樂觀鎖、輕量級(jí)鎖)詳解,CAS算法的作用是解決多線程條件下使用鎖造成性能損耗問題的算法,保證了原子性,這個(gè)原子操作是由CPU來完成的,需要的朋友可以參考下
    2024-01-01
  • 詳解Java中的mapstruct插件使用

    詳解Java中的mapstruct插件使用

    mapstruct 的插件是專門用來處理 domin 實(shí)體類與 model 類的屬性映射的,我們只需定義 mapper 接口,mapstruct 在編譯的時(shí)候就會(huì)自動(dòng)的幫我們實(shí)現(xiàn)這個(gè)映射接口,避免了麻煩復(fù)雜的映射實(shí)現(xiàn),對(duì)Java?mapstruct使用相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-04-04
  • 使用JVM常用GC日志打印參數(shù)

    使用JVM常用GC日志打印參數(shù)

    這篇文章主要介紹了使用JVM常用GC日志打印參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Spring Boot如何通過自定義注解實(shí)現(xiàn)日志打印詳解

    Spring Boot如何通過自定義注解實(shí)現(xiàn)日志打印詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot如何通過自定義注解實(shí)現(xiàn)日志打印的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • eclipse 如何創(chuàng)建 user library 方法詳解

    eclipse 如何創(chuàng)建 user library 方法詳解

    這篇文章主要介紹了eclipse 如何創(chuàng)建 user library 方法詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Spring Boot利用Docker快速部署項(xiàng)目的完整步驟

    Spring Boot利用Docker快速部署項(xiàng)目的完整步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot利用Docker快速部署項(xiàng)目的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 解析Spring Mvc Long類型精度丟失問題

    解析Spring Mvc Long類型精度丟失問題

    在平時(shí)開發(fā)過程中,經(jīng)常會(huì)使用long類型作為id的類型,但是在使用過程中會(huì)導(dǎo)致long類型數(shù)據(jù)轉(zhuǎn)換為number類型時(shí)的后兩位變?yōu)?,今天小編給大家分享Spring Mvc Long類型精度丟失問題,需要的朋友參考下吧
    2021-06-06
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(31)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(31)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07

最新評(píng)論

麻城市| 徐州市| 米林县| 潢川县| 宜章县| 黄浦区| 石河子市| 四会市| 湟源县| 伊通| 呈贡县| 辽宁省| 庆阳市| 留坝县| 临漳县| 资阳市| 龙海市| 渭南市| 红安县| 巫山县| 桦南县| 金堂县| 武城县| 禹城市| 恩施市| 太仓市| 焉耆| 丽江市| 彩票| 靖宇县| 景泰县| 潞城市| 斗六市| 汉寿县| 鱼台县| 盈江县| 怀化市| 原平市| 共和县| 城口县| 霍山县|