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

將SpringBoot應(yīng)用從JAR轉(zhuǎn)換為WAR包并部署到外部Tomcat全過程

 更新時間:2026年03月03日 09:45:01   作者:Jinkxs  
默認(rèn)情況下,SpringBoot項目被打包為可執(zhí)行的 JAR 文件,并通過內(nèi)嵌的Tomcat、Jetty或Undertow啟動,然而,在某些企業(yè)環(huán)境中,我們需要將SpringBoot應(yīng)用打包為WAR,所以本文將深入探討如何將一個標(biāo)準(zhǔn)的 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)_突(如 ClassNotFoundExceptionNoSuchMethodError)。

因此,必須將 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

  1. 訪問 Apache Tomcat 官網(wǎng) 下載最新穩(wěn)定版(如 10.1.x)。
  2. 解壓到本地目錄,例如 /opt/tomcatC:\tomcat
  3. 確保已安裝 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)。你可以通過以下方式自定義:

  1. 重命名 WAR 文件:例如 myapp.war → 訪問路徑為 /myapp
  2. 配置 application.properties(僅影響內(nèi)嵌容器,對外部 Tomcat 無效)
  3. 使用 ROOT.war:將 WAR 命名為 ROOT.war,則上下文路徑為 /(根路徑)

常見問題與解決方案

在 WAR 部署過程中,開發(fā)者常遇到以下問題。我們逐一分析并提供解決方法。

1. 啟動失敗:ClassNotFoundException 或 NoClassDefFoundError

現(xiàn)象:Tomcat 啟動時報錯,找不到 Spring 或 Tomcat 相關(guān)類。

原因:通常是內(nèi)嵌 Tomcat 未正確排除,或 provided 依賴未正確處理。

解決方案

  • 確認(rèn) pom.xmlspring-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(外部容器)
打包方式jarwar
服務(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)自動化:

  1. 代碼提交觸發(fā)構(gòu)建
  2. 生成 WAR 包
  3. 通過 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,只需:

  1. 排除 spring-boot-starter-tomcat
  2. 添加對應(yīng) starter(如 spring-boot-starter-jetty
  3. 設(shè)置為 provided scope

例如 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)文章

  • Java全能工具類之Hutool的用法詳解

    Java全能工具類之Hutool的用法詳解

    Hutool是一個Java工具類庫,由國內(nèi)的程序員loolly開發(fā),目的是提供一些方便、快捷、實(shí)用的工具類和工具方法,本文就來詳細(xì)聊聊它的使用吧
    2023-03-03
  • Spring?Boot?Aop執(zhí)行順序深入探究

    Spring?Boot?Aop執(zhí)行順序深入探究

    這篇文章主要為大家介紹了Spring?Boot?Aop執(zhí)行順序深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • SpringBoot集成Aviator實(shí)現(xiàn)參數(shù)校驗(yà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
  • Java中@JSONField注解的使用詳解

    Java中@JSONField注解的使用詳解

    這篇文章主要介紹了Java中@JSONField注解的使用,@JSONField是阿里巴巴開源的JSON處理庫FastJSON提供的一個注解,用于在Java對象和JSON數(shù)據(jù)之間進(jìn)行序列化和反序列化時,對字段的行為進(jìn)行更精細(xì)的控制,需要的朋友可以參考下
    2025-05-05
  • Spring基于AspectJ的AOP開發(fā)案例解析

    Spring基于AspectJ的AOP開發(fā)案例解析

    這篇文章主要介紹了Spring的基于AspectJ的AOP開發(fā),AspectJ是一個基于Java語言的AOP框架,使用AspectJ需要導(dǎo)入Spring?AOP和AspectJ相關(guān)jar包,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 在SpringBoot中整合數(shù)據(jù)源的示例詳解

    在SpringBoot中整合數(shù)據(jù)源的示例詳解

    這篇文章主要介紹了在SpringBoot中如何整合數(shù)據(jù)源,本文介紹了如何在SpringBoot項目中整合常見的數(shù)據(jù)源,包括JdbcTemplate、MyBatis和JPA,并探討了如何配置和使用多數(shù)據(jù)源,需要的朋友可以參考下
    2023-06-06
  • Java中類的加載順序執(zhí)行結(jié)果

    Java中類的加載順序執(zhí)行結(jié)果

    這篇文章主要介紹了Java中類的加載順序執(zhí)行結(jié)果的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • Java對接ansible自動運(yùn)維化平臺方式

    Java對接ansible自動運(yùn)維化平臺方式

    這篇文章主要介紹了Java對接ansible自動運(yùn)維化平臺方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Springboot分頁插件使用實(shí)例解析

    Springboot分頁插件使用實(shí)例解析

    這篇文章主要介紹了Springboot分頁插件使用實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • MyBatis-Plus 自動賦值實(shí)體字段最佳實(shí)踐指南

    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

最新評論

军事| 沂水县| 商丘市| 金华市| 平安县| 两当县| 中方县| 吐鲁番市| 兴义市| 济宁市| 门头沟区| 灵宝市| 揭西县| 泸水县| 黄大仙区| 开封县| 新源县| 五寨县| 松原市| 抚松县| 桦川县| 长汀县| 东明县| 武宁县| 新干县| 松原市| 沙田区| 夏津县| 平顺县| 丘北县| 华蓥市| 吉首市| 乐亭县| 罗甸县| 镇平县| 阳原县| 延安市| 平远县| 界首市| 五常市| 两当县|