SpringBoot優點達項目實戰:項目基本配置(二)

SpringBoot優點達項目實戰:項目基本配置(二)


文章目錄

      • SpringBoot優點達項目實戰:項目基本配置(二)
        • 1、項目初始化配置
        • 2、MyBatisPlus配置
        • 3、Knife配置
        • 4、定義統一返回數據結構

1、項目初始化配置

創建application.yml文件

web-admin模塊src/main/resources目錄下創建application.yml配置文件,內容如下:

server:port: 8080

創建SpringBoot啟動類

web-admin模塊下創建com.youdianda.AdminWebApplication類,內容如下:

@SpringBootApplication
public class AdminWebApplication {public static void main(String[] args) {SpringApplication.run(AdminWebApplication.class, args);}
}
2、MyBatisPlus配置

Mybatis-Plus為公用工具,故將其配置于common模塊。具體配置可參考其官方文檔。

common模塊的pom.xml文件中增加如下內容:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId>
</dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId>
</dependency>

model模塊的pom.xml文件中增加如下內容

因為model模塊下的實體類中需要配置Mybatis-Plus相關注解,故也需引入Mybatis-Plus依賴

<dependencies><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency>
</dependencies>

web-admin模塊application.yml文件增加如下內容:

spring:datasource:type: com.zaxxer.hikari.HikariDataSourceurl: jdbc:mysql://<hostname>:<port>/<database>?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8username: <username>password: <password>hikari:connection-test-query: SELECT 1 # 自動檢測連接connection-timeout: 60000 #數據庫連接超時時間,默認30秒idle-timeout: 500000 #空閑連接存活最大時間,默認600000(10分鐘)max-lifetime: 540000 #此屬性控制池中連接的最長生命周期,值0表示無限生命周期,默認1800000即30分鐘maximum-pool-size: 12 #連接池最大連接數,默認是10minimum-idle: 10 #最小空閑連接數量pool-name: SPHHikariPool # 連接池名稱#用于打印框架生成的sql語句,便于調試
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

注意:需根據實際情況修改hostnameportdatabaseusernamepassword

common模塊下創建com.youdianda.common.mybatisplus.MybatisPlusConfiguration類,內容如下:

@Configuration
@MapperScan("com.youdianda.youdianda.web.*.mapper")
public class MybatisPlusConfiguration {
}

注意@MapperScan()的包路徑需要根據實際情況進行修改。

3、Knife配置

pom文件配置

web模塊的pom.xml文件添加如下內容

因為web-app模塊同樣需要Knife4j依賴,故在兩個的父工程引入依賴即可

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>

model模塊的pom.xml文件添加上述內容

因為model模塊下的實體類需要配置Knife4j相關注解,故也需引入Knife4j依賴

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>

配置類

后臺管理系統和移動端的接口配置并不相同,所以需各自編寫一個配置類。在web-admin模塊下創建com.youdianda.web.admin.custom.config.Knife4jConfiguration類,內容如下:

@Configuration
public class Knife4jConfiguration {@Beanpublic OpenAPI customOpenAPI() {return new OpenAPI().info(new Info().title("咨詢后臺管理系統API").version("1.0").description("咨詢后臺管理系統API"));}
}

注意pathsToMatch參數需要根據實際情況進行配置。

啟動項目訪問knife,訪問地址:http://localhost:8080/doc.html#/home

image-20240625143823895

4、定義統一返回數據結構

統一接口返回數據結構:為方便前端對接口數據進行處理,統一接口返回數據結構是一個良好的習慣。

以下是所有接口統一返回的數據結構

{"code": 200,"message": "正常","data": {"id": "1","name": "zhangsan","age": 10}
}

在common的com.youdianda.common.result包下創建Result類

/*** 全局統一返回結果類*/
@Data
public class Result<T> {//返回碼private Integer code;//返回消息private String message;//返回數據private T data;public Result() {}private static <T> Result<T> build(T data) {Result<T> result = new Result<>();if (data != null)result.setData(data);return result;}public static <T> Result<T> build(T body, ResultCodeEnum resultCodeEnum) {Result<T> result = build(body);result.setCode(resultCodeEnum.getCode());result.setMessage(resultCodeEnum.getMessage());return result;}public static <T> Result<T> ok(T data) {return build(data, ResultCodeEnum.SUCCESS);}public static <T> Result<T> ok() {return Result.ok(null);}public static <T> Result<T> fail() {return build(null, ResultCodeEnum.FAIL);}public static <T> Result<T> fail(Integer code,String message){Result<T> result = build(null);result.setCode(code);result.setMessage(message);return result;}
}

ResultCodeEnum

為方便管理,可將返回碼code和返回消息message封裝到枚舉類。

/*** 統一返回結果狀態信息類*/
@Getter
public enum ResultCodeEnum {SUCCESS(200, "成功"),FAIL(201, "失敗"),PARAM_ERROR(202, "參數不正確"),SERVICE_ERROR(203, "服務異常"),DATA_ERROR(204, "數據異常"),ILLEGAL_REQUEST(205, "非法請求"),REPEAT_SUBMIT(206, "重復提交");private final Integer code;private final String message;ResultCodeEnum(Integer code, String message) {this.code = code;this.message = message;}
}

注意:由于ResultResultCodeEnum中使用@Data@Getter注解,因此需要再common模塊中引入lombok依賴。

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/35137.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35137.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35137.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學習筆記——動態路由——RIP(RIP工作原理/防環機制)

三、RIP工作原理/防環機制 1、工作原理 配置好RIP的路由器會每隔30s,向鄰居路由器自動發送RIP路由更新報文。報文里面攜帶了其所知道的所有路由。 通過發送數據包進行路由信息的交互&#xff0c;路由器啟動RIP協議&#xff0c;向周圍鄰居路由器傳遞request(請求)response(響…

克隆網站的風險

克隆網站的風險 隨著互聯網的快速發展&#xff0c;克隆網站也變得越來越常見。克隆網站是指復制原始網站的外觀和功能&#xff0c;并偽裝成原始網站。雖然克隆網站可以提供與原始網站相似的服務和體驗&#xff0c;但它們也帶來了一系列風險。本文將探討克隆網站的風險&#xff…

我的故事與思考

在24年的高考帷幕落下之后&#xff0c;我們站在了一個新的起點&#xff0c;面對著即將開始的大學新生活&#xff0c;我們面臨著一道重要的選擇題&#xff1a;是選擇一個心儀的專業&#xff0c;還是選擇一個知名度更高的學校&#xff1f;這是一個困擾了眾多考生和家長的長期難題…

Docker 從入門到精通(大全)

一、概述 1.1 基本概念 Docker 是一個開源的應用容器引擎&#xff0c;基于 Go 語言 并遵從 Apache2.0 協議開源。 Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中&#xff0c;然后發布到任何流行的 Linux 機器上&#xff0c;也可以實現虛擬化。…

使用QtGui顯示QImage的幾種方法

問題描述 我是一名剛學習Qt的新手,正在嘗試創建一個簡單的GUI應用程序。當點擊一個按鈕時,顯示一張圖片。我可以使用QImage對象讀取圖片,但是否有簡單的方法調用一個Qt函數,將QImage作為輸入并顯示它? 方法一:使用QLabel顯示QImage 最簡單的方式是將QImage添加到QLabe…

bigtop gradle 任務依賴關系

./gradlew deb 會編譯ubuntu的所有deb包 任務deb會依賴17個任務&#xff0c;它們會按字母排序執行&#xff0c;如下&#xff1a; alluxio-deb bigtop-groovy-deb bigtop-jsvc-deb bigtop-utils-deb flink-deb hadoop-deb hbase-deb hive-deb kafka-deb livy-deb phoenix-deb …

這5款國內可用的寶藏AI視頻工具,不允許有人還不知道!(建議收藏)

文章首發于公眾號&#xff1a;X小鹿AI副業 大家好&#xff0c;我是程序員X小鹿&#xff0c;前互聯網大廠程序員&#xff0c;自由職業2年&#xff0c;也一名 AIGC 愛好者&#xff0c;持續分享更多前沿的「AI 工具」和「AI副業玩法」&#xff0c;歡迎一起交流~ 前幾天一位粉絲說給…

【MySQL】數據庫——存儲引擎

一、存儲引擎概述 1.概念 MySQL中的數據用各種不同的技術存儲在文件中&#xff0c;每一種技術都使用不同的存儲機制、索引技巧、鎖定水平并最終提供不同的功能和能力&#xff0c;這些不同的技術以及配套的功能在MySQL中稱為存儲引擎存儲引擎是MySQL將數據存儲在文件系統中的存…

會聲會影2024永久激活碼序列號注冊機分享

大家好呀&#xff0c;今天我想給大家安利一款我最近超級喜歡的軟件——會聲會影2024&#xff01;&#x1f31f; 作為一個視頻編輯愛好者&#xff0c;我嘗試過很多視頻編輯軟件&#xff0c;但總感覺少了那么一點點“火花”。直到我遇到了會聲會影2024&#xff0c;它完全改變了我…

環境科學SCI期刊,IF=3+,易錄用,幾乎不退稿

一、期刊名稱 International Journal of Environmental Science and Technology 二、期刊簡介概況 期刊類型&#xff1a;SCI 學科領域&#xff1a;環境科學 影響因子&#xff1a;3.1 中科院分區&#xff1a;4區 三、期刊簡介 International Journal of Environmental Sci…

C++_STL---string類

前言 說起string類&#xff0c;首先需要了解的是 - string類是什么&#xff1f; std::string是類模板std::basic_string的一個元素類型為char的實例化&#xff0c;而basic_string則是對元素指針的封裝。由于basic_string的實現對字符串操作進行了優化&#xff0c;所以它不能用…

深入理解計算機系統 CSAPP 家庭作業6.45

CS:APP3e, Bryant and OHallaron 可以參考這里 void bijk(array A, array B, array C, int n, int bsize) {int i, j, k, kk, jj;double sum;int en bsize*(n/bsize);for (i 0; i < n; i)for (j 0; j < n; j)C[i][j] 0.0;for (kk 0; kk < en; kk bsize) {for (j…

QT拖放事件之八:通過全局剪切板中的接口QClipboard::mimeData()來獲取MIME類型數據

1、演示效果 首先向剪切板寫入數據,然后點擊paste按鈕進行從全局剪切板中 獲取 MIME數據。。。 2、核心代碼 void Widget::on_pasteBtn_clicked() {const QClipboard* clipBoard = QGuiApplication::clipboard()

前端路由中的meta、matched是什么?有哪些作用?

在前端路由中&#xff0c;尤其是在 Vue.js 這樣的框架中&#xff0c;meta 和 matched 是兩個常見的概念&#xff0c;它們提供了關于路由的額外信息和上下文 1. meta 一個可以附加到 Vue Router 路由定義上的自定義字段 它通常用于存儲一些與路由相關的元數據或信息&#xff0…

算法07 深度優先搜索及相關問題詳解

深搜與廣搜是搜索算法中最常用的兩種算法&#xff0c;通過深度優先搜索解決問題還會用到回溯和剪枝&#xff0c;讓我們一起進入本章&#xff0c;了解深搜的基本概念和模板&#xff0c;并學會解決一些常見問題。 目錄 問題導入 走迷宮問題 如何走&#xff1f; 問題建模 如何…

python ----- xml 命名空間與xpath詳解

一、簡介 本文章以如下xml 樣例進行講解命名空間和xpath xml_text"""<?xml version"1.0"?><actors xmlns:fictional"http://characters.example.com"xmlns"http://people.example.com"><actor><name>…

SpringBean的管理

一、bean的名字與標識符 <bean id"" class""></bean> bean的名字作用: 獲取這個bean通過bean名字獲取 bean名字配置方式: id: 唯一標志符, 命名規范與變量命名規范一樣, 包含特殊符號name: 配置名字: 可以包含特殊符號,沒有要求, 比如. 一…

基于支持向量機的垃圾郵件分類,使用SVM+flask+vue

sms-classify 基于支持向量機的垃圾郵件分類&#xff0c;使用SVMflaskvue 數據集和源碼地址 數據集 SMS Spam Collection Data Set 來源于 UCI。樣例被分為非垃圾郵件&#xff08;86.6%&#xff09;和垃圾郵件&#xff08;13.4%&#xff09;&#xff0c;數據格式如下&#xff…

網絡爬蟲中Xpath的使用方法

正則表達式雖然可以處理包含了諸如 HTML 或 XML 內容的字符串&#xff0c;但只能根據文本的 特征匹配字符串&#xff0c;而忽略字符串所包含的內容的真實格式。為了解決這個問題&#xff0c;Python 引入 XPath 以及支持 XPath 的第三方庫 lxml&#xff0c;專門對 XML 或 HTML 格…

git 合并master到分支

master分支的代碼領先自己的分支,git 如何把master分支代碼合并到自己的分支 1.首先切換到主分支 git checkout master 2.使用git pull 把領先的主分支代碼pull下來 git pull 3.切換到自己的分支 git checkout xxx(自己的分支) 4.把主分支的代碼merge到自己的分支 git merge ma…