將SpringBoot應(yīng)用從JAR轉(zhuǎn)換為WAR包并部署到外部Tomcat全過程
在現(xiàn)代 Java Web 開發(fā)中,Spring Boot 憑借其“約定優(yōu)于配置”的理念和內(nèi)嵌服務(wù)器的便利性,已經(jīng)成為構(gòu)建微服務(wù)和單體應(yīng)用的首選框架。默認(rèn)情況下,Spring Boot 項目被打包為可執(zhí)行的 JAR 文件,并通過內(nèi)嵌的 Tomcat、Jetty 或 Undertow 啟動。然而,在某些企業(yè)環(huán)境中,尤其是那些已有傳統(tǒng) Java EE 基礎(chǔ)設(shè)施或強(qiáng)制要求使用外部 Servlet 容器(如 Apache Tomcat)的場景下,我們需要將 Spring Boot 應(yīng)用打包為 WAR(Web Application Archive)格式,以便部署到獨(dú)立的 Tomcat 服務(wù)器上。
本文將深入探討如何將一個標(biāo)準(zhǔn)的 Spring Boot 應(yīng)用從 JAR 轉(zhuǎn)換為 WAR 包,并成功部署到外部 Tomcat 容器中。我們將涵蓋項目結(jié)構(gòu)改造、依賴調(diào)整、啟動類修改、構(gòu)建配置、本地測試以及生產(chǎn)部署等完整流程,并輔以詳細(xì)的代碼示例和原理說明。無論你是剛接觸 Spring Boot 的新手,還是需要應(yīng)對企業(yè)級部署需求的開發(fā)者,本文都將為你提供清晰、實(shí)用的指導(dǎo)。
為什么選擇 WAR 包部署?
盡管 Spring Boot 的內(nèi)嵌容器帶來了極大的開發(fā)便利性,但在實(shí)際生產(chǎn)環(huán)境中,仍有不少理由促使我們選擇傳統(tǒng)的 WAR 包部署方式:
企業(yè)合規(guī)與標(biāo)準(zhǔn)化
許多大型企業(yè)擁有統(tǒng)一的應(yīng)用服務(wù)器管理策略,要求所有 Web 應(yīng)用必須部署在中央管理的 Tomcat 或 WebLogic 實(shí)例上,便于監(jiān)控、日志集中、安全策略實(shí)施和資源隔離。
共享資源與性能調(diào)優(yōu)
在高并發(fā)場景下,多個應(yīng)用共享同一個 JVM 和 Servlet 容器實(shí)例可以減少內(nèi)存開銷(盡管需謹(jǐn)慎處理類加載沖突)。同時,運(yùn)維團(tuán)隊可能對 Tomcat 有深度調(diào)優(yōu)經(jīng)驗(yàn),更傾向于使用熟悉的外部容器。
遺留系統(tǒng)集成
當(dāng) Spring Boot 應(yīng)用需要與舊版 Java EE 應(yīng)用共存于同一服務(wù)器時,WAR 部署是自然的選擇,便于共享會話、上下文或數(shù)據(jù)庫連接池等資源。
CI/CD 流水線兼容
某些企業(yè)的持續(xù)集成/持續(xù)部署流水線已經(jīng)圍繞 WAR 包構(gòu)建了完整的自動化流程(如 Jenkins + Tomcat Manager),遷移成本較高。
注意:Spring Boot 官方文檔明確指出,雖然支持 WAR 部署,但推薦優(yōu)先使用可執(zhí)行 JAR + 內(nèi)嵌容器的方式,因?yàn)檫@是 Spring Boot 設(shè)計的核心優(yōu)勢所在。只有在確實(shí)需要時才選擇 WAR 方案。
準(zhǔn)備工作:創(chuàng)建一個基礎(chǔ) Spring Boot 項目
在開始改造之前,我們先創(chuàng)建一個最簡單的 Spring Boot Web 應(yīng)用作為起點(diǎn)。你可以使用 Spring Initializr 快速生成項目骨架。
項目配置(Maven)
- Project: Maven Project
- Language: Java
- Spring Boot: 3.2.x(或最新穩(wěn)定版)
- Packaging: Jar(初始為 JAR,后續(xù)改為 WAR)
- Java Version: 17(或你環(huán)境支持的 LTS 版本)
- Dependencies: Spring Web, Spring Boot DevTools(可選)
生成并導(dǎo)入 IDE 后,你會得到如下核心文件結(jié)構(gòu):
demo-war-app/ ├── pom.xml ├── src/ │ └── main/ │ ├── java/ │ │ └── com/example/demowarapp/ │ │ ├── DemoWarAppApplication.java │ │ └── controller/ │ │ └── HelloController.java │ └── resources/ │ └── application.properties
核心代碼示例
DemoWarAppApplication.java(主啟動類):
package com.example.demowarapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoWarAppApplication {
public static void main(String[] args) {
SpringApplication.run(DemoWarAppApplication.class, args);
}
}
HelloController.java(簡單 REST 接口):
package com.example.demowarapp.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello from Spring Boot WAR!";
}
}
此時,運(yùn)行 mvn spring-boot:run 或直接執(zhí)行主方法,應(yīng)用將在內(nèi)嵌 Tomcat 上啟動,默認(rèn)端口 8080,訪問 http://localhost:8080/hello 可看到返回信息。
第一步:修改打包方式為 WAR
要生成 WAR 包,首先需要告訴構(gòu)建工具(Maven 或 Gradle)改變默認(rèn)的打包類型。
Maven 配置 (pom.xml)
在 <packaging> 標(biāo)簽中指定為 war:
<packaging>war</packaging>
完整片段如下:
<groupId>com.example</groupId> <artifactId>demo-war-app</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <!-- 關(guān)鍵修改 --> <name>demo-war-app</name> <description>Demo project for Spring Boot WAR deployment</description>
Gradle 配置 (build.gradle)
如果你使用 Gradle,則需應(yīng)用 war 插件:
plugins {
id 'org.springframework.boot' version '3.2.0'
id 'io.spring.dependency-management' version '1.1.4'
id 'java'
id 'war' // 添加此行
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
// 其他配置...
? 提示:Maven 用戶注意,spring-boot-starter-parent 已經(jīng)預(yù)配置了 maven-war-plugin,通常無需額外聲明。
第二步:排除內(nèi)嵌 Tomcat 依賴
Spring Boot Web Starter 默認(rèn)包含內(nèi)嵌的 Tomcat 服務(wù)器(spring-boot-starter-tomcat)。當(dāng)我們將應(yīng)用部署到外部 Tomcat 時,這個內(nèi)嵌容器不僅多余,還可能引發(fā)類路徑?jīng)_突(如 ClassNotFoundException 或 NoSuchMethodError)。
因此,必須將 spring-boot-starter-tomcat 設(shè)置為 provided scope(Maven)或 providedCompile(Gradle),表示該依賴在編譯時需要,但在運(yùn)行時由 Servlet 容器提供。
Maven 配置 (pom.xml)
在 spring-boot-starter-web 依賴中排除 Tomcat,并顯式聲明為 provided:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 排除內(nèi)嵌 Tomcat -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 顯式添加 Tomcat 依賴,scope 為 provided -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- 其他依賴... -->
</dependencies>
Gradle 配置 (build.gradle)
dependencies {
implementation('org.springframework.boot:spring-boot-starter-web') {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
}
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
// 其他依賴...
}
?? 重要:不要完全移除 spring-boot-starter-tomcat!Spring Boot 的自動配置仍需要它提供的類(如 TomcatServletWebServerFactory),只是運(yùn)行時不加載內(nèi)嵌服務(wù)器實(shí)例。
第三步:改造主啟動類
Spring Boot 應(yīng)用要作為 WAR 部署,必須實(shí)現(xiàn) SpringBootServletInitializer 接口。該接口是 Spring Boot 與 Servlet 3.0+ 規(guī)范的橋梁,允許應(yīng)用在 Servlet 容器啟動時被正確初始化。
修改DemoWarAppApplication.java
package com.example.demowarapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class DemoWarAppApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoWarAppApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemoWarAppApplication.class, args);
}
}
關(guān)鍵點(diǎn)解析:
- 繼承
SpringBootServletInitializer:這是 WAR 部署的必要條件。 - 重寫
configure()方法:該方法在 Servlet 容器(如 Tomcat)啟動 WAR 時被調(diào)用,用于構(gòu)建SpringApplication實(shí)例。application.sources(...)指定了主配置類。 - 保留
main()方法:這樣應(yīng)用既可以作為 WAR 部署,也可以通過java -jar(如果仍打包為 JAR)或 IDE 直接運(yùn)行,保持開發(fā)靈活性。
?? 原理:Servlet 3.0+ 規(guī)范引入了 ServletContainerInitializer 機(jī)制。Spring Boot 通過 SpringBootServletInitializer 實(shí)現(xiàn)了該機(jī)制,使得 WAR 包在部署時能自動觸發(fā) Spring Boot 的啟動流程,而無需 web.xml。
第四步:驗(yàn)證項目結(jié)構(gòu)與構(gòu)建 WAR 包
完成上述修改后,項目應(yīng)具備正確的 WAR 結(jié)構(gòu)。讓我們檢查并構(gòu)建。
項目結(jié)構(gòu)期望
標(biāo)準(zhǔn) WAR 包應(yīng)包含:
WEB-INF/classes/:編譯后的 Java 類和資源文件WEB-INF/lib/:第三方依賴(不包括 provided 范圍的)WEB-INF/lib-provided/:Spring Boot 特有的目錄,存放 provided 依賴(僅當(dāng)使用 Spring Boot Maven Plugin 時)META-INF/:元數(shù)據(jù)
Spring Boot 的 WAR 包略有不同:它既是標(biāo)準(zhǔn) WAR(可部署到 Tomcat),又是可執(zhí)行 JAR(如果保留內(nèi)嵌容器)。但在我們的配置下,由于排除了內(nèi)嵌 Tomcat,生成的 WAR 不可執(zhí)行,只能部署到外部容器。
構(gòu)建命令
Maven:
mvn clean package
Gradle:
./gradlew clean bootWar # 注意:Spring Boot Gradle Plugin 使用 bootWar 任務(wù)
?? 注意:Gradle 用戶應(yīng)使用 bootWar 而非 war 任務(wù),因?yàn)?bootWar 會正確處理 Spring Boot 的特殊需求(如啟動類、依賴范圍等)。
構(gòu)建成功后,WAR 文件位于:
- Maven:
target/demo-war-app-0.0.1-SNAPSHOT.war - Gradle:
build/libs/demo-war-app-0.0.1-SNAPSHOT.war
你可以用解壓工具打開 WAR 文件,確認(rèn) WEB-INF/lib/ 中不包含 tomcat-embed-core 等內(nèi)嵌 Tomcat JAR。
第五步:本地 Tomcat 部署與測試
現(xiàn)在,我們將 WAR 包部署到本地 Tomcat 實(shí)例進(jìn)行測試。
下載并安裝 Tomcat
- 訪問 Apache Tomcat 官網(wǎng) 下載最新穩(wěn)定版(如 10.1.x)。
- 解壓到本地目錄,例如
/opt/tomcat或C:\tomcat。 - 確保已安裝 JDK 17+ 并配置好
JAVA_HOME。
?? 提示:Tomcat 10+ 默認(rèn)使用 Jakarta EE 9 命名空間(jakarta.*),而 Spring Boot 3.x 也已遷移到 Jakarta EE 9。因此務(wù)必使用 Tomcat 10 或更高版本。若使用 Spring Boot 2.x,則需 Tomcat 9(支持 javax.*)。
部署 WAR 包
將生成的 WAR 文件復(fù)制到 Tomcat 的 webapps/ 目錄:
cp target/demo-war-app-0.0.1-SNAPSHOT.war $TOMCAT_HOME/webapps/
啟動 Tomcat
進(jìn)入 Tomcat 的 bin/ 目錄,執(zhí)行啟動腳本:
- Linux/macOS:
./catalina.sh run - Windows:
catalina.bat run
觀察控制臺日志,應(yīng)能看到 Spring Boot 應(yīng)用的啟動信息,類似:
INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http) INFO o.s.b.StartupInfoLogger - Starting DemoWarAppApplication using Java 17... ... INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): ... (http) with context path '/demo-war-app-0.0.1-SNAPSHOT'
訪問應(yīng)用
打開瀏覽器,訪問:
http://localhost:8080/demo-war-app-0.0.1-SNAPSHOT/hello
你應(yīng)該看到返回:
Hello from Spring Boot WAR!
成功!這表明 WAR 包已正確部署并運(yùn)行。
自定義 Context Path(可選)
默認(rèn)情況下,WAR 文件名(不含 .war)即為上下文路徑(Context Path)。你可以通過以下方式自定義:
- 重命名 WAR 文件:例如
myapp.war→ 訪問路徑為/myapp - 配置
application.properties(僅影響內(nèi)嵌容器,對外部 Tomcat 無效) - 使用
ROOT.war:將 WAR 命名為ROOT.war,則上下文路徑為/(根路徑)
常見問題與解決方案
在 WAR 部署過程中,開發(fā)者常遇到以下問題。我們逐一分析并提供解決方法。
1. 啟動失敗:ClassNotFoundException 或 NoClassDefFoundError
現(xiàn)象:Tomcat 啟動時報錯,找不到 Spring 或 Tomcat 相關(guān)類。
原因:通常是內(nèi)嵌 Tomcat 未正確排除,或 provided 依賴未正確處理。
解決方案:
- 確認(rèn)
pom.xml中spring-boot-starter-tomcat的 scope 為provided - 檢查 WAR 包的
WEB-INF/lib/目錄,確保無tomcat-embed-*JAR - 若使用 Gradle,確認(rèn)使用
bootWar任務(wù)而非war
2. 應(yīng)用無法訪問,返回 404
現(xiàn)象:Tomcat 啟動成功,但訪問 /context-path/hello 返回 404。
原因:
- 上下文路徑錯誤(檢查 WAR 文件名)
- Controller 未被掃描到
- Spring Boot 未正確初始化
解決方案:
- 查看 Tomcat 日志,確認(rèn) Spring Boot 是否啟動成功
- 確保
@SpringBootApplication注解的類在正確包路徑下(默認(rèn)掃描子包) - 嘗試訪問根路徑
/context-path/,看是否返回 Whitelabel Error Page(說明 Spring MVC 已工作)
3. 靜態(tài)資源(CSS/JS)無法加載
現(xiàn)象:HTML 頁面能訪問,但樣式和腳本 404。
原因:Spring Boot 默認(rèn)將靜態(tài)資源放在 src/main/resources/static/,WAR 部署時這些資源會被正確打包到 WEB-INF/classes/static/,應(yīng)能正常訪問。
解決方案:
- 確認(rèn)資源文件位置正確
- 檢查瀏覽器開發(fā)者工具中的網(wǎng)絡(luò)請求路徑
- 避免在 Controller 中攔截所有路徑(如
/**)
4. 數(shù)據(jù)庫連接池問題
現(xiàn)象:應(yīng)用啟動時無法連接數(shù)據(jù)庫。
原因:HikariCP 等連接池在外部容器中可能因類加載器問題無法初始化。
解決方案:
- 確保數(shù)據(jù)庫驅(qū)動 JAR 放在 Tomcat 的
lib/目錄(全局共享),或打包進(jìn) WAR 的WEB-INF/lib/ - 在
application.properties中顯式配置連接池參數(shù)
高級配置:優(yōu)化 WAR 部署體驗(yàn)
除了基本部署,我們還可以進(jìn)行一些優(yōu)化,提升可維護(hù)性和性能。
1. 自定義啟動日志
在 application.properties 中配置日志級別:
logging.level.org.springframework=INFO logging.level.com.example=DEBUG
日志文件默認(rèn)輸出到 Tomcat 的 logs/catalina.out。如需獨(dú)立日志文件,可配置 Logback:
src/main/resources/logback-spring.xml:
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/demo-app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/demo-app.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="FILE" />
</root>
</configuration>
注意:確保 Tomcat 進(jìn)程對 logs/ 目錄有寫權(quán)限。
2. 外部化配置
將 application.properties 外部化,便于不同環(huán)境部署:
- 將配置文件放在 Tomcat 的
conf/目錄 - 通過 JVM 參數(shù)指定配置路徑:
export CATALINA_OPTS="-Dspring.config.location=file:/opt/tomcat/conf/demo-app.properties"
3. 健康檢查與監(jiān)控
啟用 Spring Boot Actuator:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
在 application.properties 中暴露端點(diǎn):
management.endpoints.web.exposure.include=health,info,metrics management.endpoint.health.show-details=always
部署后訪問 http://localhost:8080/context-path/actuator/health 可查看健康狀態(tài)。
WAR 與 JAR 部署對比
關(guān)鍵差異總結(jié):
| 特性 | JAR(內(nèi)嵌容器) | WAR(外部容器) |
|---|---|---|
| 打包方式 | jar | war |
| 服務(wù)器 | 內(nèi)嵌 Tomcat/Jetty | 外部 Tomcat/WebLogic |
| 啟動命令 | java -jar app.jar | 復(fù)制到 webapps/ |
| 進(jìn)程模型 | 獨(dú)立 Java 進(jìn)程 | 共享 Tomcat 進(jìn)程 |
| 配置復(fù)雜度 | 低(開箱即用) | 中(需排除依賴、改啟動類) |
| 適用場景 | 微服務(wù)、云原生、快速原型 | 傳統(tǒng)企業(yè)、合規(guī)要求、遺留集成 |
生產(chǎn)環(huán)境最佳實(shí)踐
在將 WAR 包投入生產(chǎn)前,請遵循以下建議:
1. 使用 Profile 管理環(huán)境配置
通過 Spring Profiles 區(qū)分開發(fā)、測試、生產(chǎn)環(huán)境:
application-prod.properties:
spring.datasource.url=jdbc:mysql://prod-db:3306/mydb spring.datasource.username=prod_user spring.jpa.hibernate.ddl-auto=validate
啟動時激活 Profile:
export CATALINA_OPTS="-Dspring.profiles.active=prod"
2. 安全加固
- 禁用不必要的 Actuator 端點(diǎn)
- 配置 HTTPS(在 Tomcat 層面)
- 使用強(qiáng)密碼和加密配置
3. 性能調(diào)優(yōu)
- 調(diào)整 Tomcat 線程池大?。?code>server.xml 中的
maxThreads) - 優(yōu)化 JVM 參數(shù)(堆內(nèi)存、GC 策略)
- 啟用 Gzip 壓縮(Tomcat 的
compression屬性)
4. 自動化部署
結(jié)合 CI/CD 工具(如 Jenkins)實(shí)現(xiàn)自動化:
- 代碼提交觸發(fā)構(gòu)建
- 生成 WAR 包
- 通過 Tomcat Manager API 部署(需配置用戶權(quán)限)
tomcat-users.xml 示例:
<tomcat-users>
<role rolename="manager-script"/>
<user username="deployer" password="secure_password" roles="manager-script"/>
</tomcat-users>
Jenkins 部署腳本片段:
curl -u deployer:secure_password \ http://localhost:8080/manager/text/deploy?path=/myapp \ --upload-file target/myapp.war
替代方案:使用 Undertow 或 Jetty
雖然本文聚焦 Tomcat,但 Spring Boot 也支持其他 Servlet 容器。若企業(yè)使用 Jetty 或 Undertow,只需:
- 排除
spring-boot-starter-tomcat - 添加對應(yīng) starter(如
spring-boot-starter-jetty) - 設(shè)置為
providedscope
例如 Jetty(Maven):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
<scope>provided</scope>
</dependency>
總結(jié):何時選擇 WAR 部署?
將 Spring Boot 應(yīng)用打包為 WAR 并部署到外部 Tomcat,是一種特定場景下的折中方案。它犧牲了 Spring Boot “開箱即用”的部分便利性,換取了與傳統(tǒng) Java EE 生態(tài)的兼容性。
推薦使用 WAR 部署的情況:
- 企業(yè)強(qiáng)制要求使用中央管理的 Tomcat 集群
- 需要與舊版 WAR 應(yīng)用共享會話或資源
- 運(yùn)維團(tuán)隊熟悉 Tomcat 調(diào)優(yōu)且不愿管理多個內(nèi)嵌容器實(shí)例
應(yīng)避免 WAR 部署的情況:
- 新建微服務(wù)項目
- 云原生環(huán)境(Kubernetes/Docker)
- 追求快速迭代和簡化部署流程
無論選擇哪種方式,理解其背后的原理(Servlet 規(guī)范、類加載機(jī)制、依賴管理)都是關(guān)鍵。希望本文的詳細(xì)步驟和示例能幫助你在需要時順利實(shí)現(xiàn) Spring Boot 的 WAR 部署。
以上就是將SpringBoot應(yīng)用從JAR轉(zhuǎn)換為WAR包并部署到外部Tomcat全過程的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot應(yīng)用JAR轉(zhuǎn)WAR包的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot集成Aviator實(shí)現(xiàn)參數(shù)校驗(yàn)的示例代碼
在實(shí)際開發(fā)中,參數(shù)校驗(yàn)是保障系統(tǒng)穩(wěn)定和數(shù)據(jù)可靠性的重要措施,Aviator 是一個高性能的表達(dá)式引擎,它能夠簡化復(fù)雜的邏輯判斷并提升參數(shù)校驗(yàn)的靈活性,本文將介紹如何在 Spring Boot 中集成 Aviator,并利用它來實(shí)現(xiàn)靈活的參數(shù)校驗(yàn),需要的朋友可以參考下2025-02-02
在SpringBoot中整合數(shù)據(jù)源的示例詳解
這篇文章主要介紹了在SpringBoot中如何整合數(shù)據(jù)源,本文介紹了如何在SpringBoot項目中整合常見的數(shù)據(jù)源,包括JdbcTemplate、MyBatis和JPA,并探討了如何配置和使用多數(shù)據(jù)源,需要的朋友可以參考下2023-06-06
MyBatis-Plus 自動賦值實(shí)體字段最佳實(shí)踐指南
MyBatis-Plus通過@TableField注解與填充策略,實(shí)現(xiàn)時間戳、用戶信息、邏輯刪除等字段的自動填充,減少手動賦值,提升開發(fā)效率與數(shù)據(jù)一致性,是優(yōu)化數(shù)據(jù)庫操作的有效工具,本文給大家介紹MyBatis-Plus 自動賦值實(shí)體字段的相關(guān)知識,感興趣的朋友一起看看吧2025-07-07

