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

SpringBoot3?框架快速搭建與項目工程詳解

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

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

一、項目整體架構設計

1. 技術棧選型

1.1 后端技術棧

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

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

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

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

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

1.2 前端技術棧

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

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

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

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

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

2. 架構流程圖

前端(Vue3 + Element-Plus)
    │
    ├─ 頁面組件(用戶列表、新增/編輯彈窗)
    ├─ 網(wǎng)絡請求(Axios 封裝)
    ├─ 路由管理(Vue Router)
    └─ 狀態(tài)管理(Pinia)
        │
        ▼
HTTP 請求(RESTful API)
        │
        ▼
后端(SpringBoot3)
    │
    ├─ 控制層(Controller:接收請求、返回響應)
    ├─ 服務層(Service:業(yè)務邏輯處理)
    ├─ 持久層(Mapper:MyBatis-Plus 數(shù)據(jù)訪問)
    ├─ 實體層(Entity:數(shù)據(jù)庫表映射)
    ├─ 公共組件(統(tǒng)一返回、全局異常處理)
    └─ 接口文檔(Knife4j)
        │
        ▼
數(shù)據(jù)庫(MySQL8.0)

3. 核心功能模塊

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

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

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

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

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

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

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

刪除無用的文件

然后在pom.xml文件當中進行配置

配置maven

選擇 pom.xml 然后加載依賴

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

四、pom.xml文件

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

我們在寫或者引入一些SpringBoot依賴的時候,不需要指定版本

啟動器

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

啟動器:說白了就是SpringBoot啟動的場景

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

SpringBoot會將所有的功能場景,都變成一個個的啟動器

我們需要使用的功能,只需要找到他們的啟動器便可以進行使用

啟動成功

加載web啟動

<!--加載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 是作為前端判斷請求成功的依據(jù),msg 是錯誤的信息,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("請求成功");
        return result;
    }
    public static Result success(Object data) {
        Result result = new Result();
        result.setCode("200");
        result.setData(data);
        result.setMsg("請求成功");
        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 錯誤:常見的系統(tǒ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對象轉(zhuǎn)換成 json的格式
    public Result error(Exception e) {
        log.error("系統(tǒng)異常", e);
        return Result.error("系統(tǒng)異常");
    }
}

系統(tǒng)異常怎么辦

你得看你的控制臺,然后找到報錯的代碼位置,具體去修正代碼

自定義異常

/**
 * 自定義異常
 * 運行時異常
 */
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對象轉(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對象轉(zhuǎn)換成 json的格式
    public Result customerError(CustomerException e) {
        log.error("自定義錯誤", 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("賬號錯誤");
        }
    }
}

到此這篇關于SpringBoot3 框架快速搭建與項目工程詳解的文章就介紹到這了,更多相關SpringBoot內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

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

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

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

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

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

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

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

    詳解Java中的mapstruct插件使用

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

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

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

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

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

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

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

    Spring Boot利用Docker快速部署項目的完整步驟

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

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

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

    Java日常練習題,每天進步一點點(31)

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

最新評論

临洮县| 康保县| 平塘县| 珲春市| 衡南县| 蒙阴县| 黑龙江省| 黄浦区| 凤翔县| 四川省| 福清市| 永丰县| 玉田县| 兴安县| 上高县| 延安市| 宜阳县| 大港区| 绵竹市| 桦南县| 万山特区| 明光市| 丹寨县| 宝山区| 碌曲县| 无为县| 什邡市| 台北市| 宝丰县| 蒙自县| 黔西| 来凤县| 台南县| 云浮市| 和硕县| 集贤县| 上蔡县| 德令哈市| 五大连池市| 阿鲁科尔沁旗| 崇礼县|