欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot Jar 文件能直接運(yùn)行的操作方法

 更新時(shí)間:2024年12月07日 09:30:28   投稿:mrr  
本文將深入探討 Spring Boot 的打包過(guò)程及其運(yùn)行原理,揭示其 JAR 文件如何巧妙地集成依賴(lài)項(xiàng)、嵌入 Web 容器并實(shí)現(xiàn)自動(dòng)配置,感興趣的朋友跟隨小編一起看看吧

在傳統(tǒng)的 Java 應(yīng)用程序開(kāi)發(fā)和部署場(chǎng)景中,開(kāi)發(fā)人員通常需要經(jīng)過(guò)一系列復(fù)雜的步驟,才能成功將應(yīng)用程序部署到生產(chǎn)環(huán)境中。

例如,對(duì)于基于 Servlet 規(guī)范的 Java Web 應(yīng)用程序,在開(kāi)發(fā)完成后,通常會(huì)將其打包為 WAR 文件,然后部署到像 Apache Tomcat 或 Jetty 這樣的 Web 容器中。

在此過(guò)程中,開(kāi)發(fā)人員需要管理應(yīng)用程序本身的已編譯工件,處理各種第三方依賴(lài)項(xiàng)的版本和加載順序,并適當(dāng)配置服務(wù)器,以確保應(yīng)用程序正常運(yùn)行。

隨著 Spring Boot 的出現(xiàn),它通過(guò)開(kāi)箱即用和約定優(yōu)于配置的理念,徹底改變了 Java 應(yīng)用程序開(kāi)發(fā)體驗(yàn)。

Spring Boot 的一個(gè)標(biāo)志性功能是,應(yīng)用程序可以被打包為直接可執(zhí)行的 JAR 文件,而無(wú)需外部容器。

當(dāng)我們提到“Spring Boot JAR 可以直接運(yùn)行”時(shí),會(huì)引發(fā)一個(gè)問(wèn)題:是什么機(jī)制使得一個(gè)簡(jiǎn)單的命令行操作就能啟動(dòng)一個(gè)完整的 Web 服務(wù)或任何類(lèi)型的 Java 應(yīng)用程序?

本文將深入探討 Spring Boot 的打包過(guò)程及其運(yùn)行原理,揭示其 JAR 文件如何巧妙地集成依賴(lài)項(xiàng)、嵌入 Web 容器并實(shí)現(xiàn)自動(dòng)配置。

這使開(kāi)發(fā)人員能夠快速將應(yīng)用程序部署到任何支持 Java 的環(huán)境中。

一、Spring Boot JAR 包的基本概念

Fat JAR(也稱(chēng)為 Uber JAR,詼諧地被稱(chēng)為“胖 JAR”)是一種特殊類(lèi)型的 Java 存檔(JAR)文件,它將應(yīng)用程序所需的所有依賴(lài)項(xiàng)與應(yīng)用程序自身的類(lèi)文件結(jié)合到一個(gè) JAR 文件中。

在 Spring Boot 的上下文中,F(xiàn)at JAR 用于構(gòu)建一個(gè)完全自包含且獨(dú)立可執(zhí)行的應(yīng)用程序包。

這種 JAR 文件不僅包括項(xiàng)目的主代碼,還包括所有必要的第三方庫(kù)、資源文件以及運(yùn)行時(shí)所需的所有其他組件。

Fat JAR 的核心特性是“自包含”,這意味著部署應(yīng)用程序只需分發(fā)這一個(gè)文件,而無(wú)需單獨(dú)處理眾多依賴(lài)庫(kù)。

這大大簡(jiǎn)化了應(yīng)用程序的快速部署和遷移,尤其適合云部署或沒(méi)有網(wǎng)絡(luò)訪問(wèn)環(huán)境的安裝。

相較之下,普通的 JAR 文件通常只包含應(yīng)用程序的一個(gè)模塊或部分,主要用于封裝和組織 Java 類(lèi)及相關(guān)資源。

在 Java 生態(tài)系統(tǒng)中,普通的 JAR 文件可能只是一個(gè)庫(kù)或一組相關(guān)功能的集合,但不會(huì)包含其他依賴(lài)的 JAR 文件,運(yùn)行時(shí)需要在類(lèi)路徑中提供其他相關(guān)庫(kù)。

與此相比,F(xiàn)at JAR 通過(guò)將所有依賴(lài)項(xiàng)都包含在自身內(nèi)部,解決了依賴(lài)管理問(wèn)題,避免了因類(lèi)路徑設(shè)置不當(dāng)導(dǎo)致的“缺少類(lèi)”或“類(lèi)未找到”問(wèn)題。

在 Spring Boot 項(xiàng)目中,可以使用 Maven 或 Gradle 插件輕松構(gòu)建 Fat JAR,使最終的 JAR 文件成為一個(gè)真正的“一站式”解決方案,只需通過(guò) java -jar 命令即可啟動(dòng)整個(gè)應(yīng)用程序,而無(wú)需預(yù)先配置復(fù)雜的類(lèi)路徑環(huán)境。

二、Spring Boot 應(yīng)用程序的打包機(jī)制

Spring Boot 應(yīng)用程序的打包機(jī)制充分利用了 Maven 或 Gradle 等構(gòu)建工具的強(qiáng)大功能,旨在簡(jiǎn)化傳統(tǒng)的 Java 應(yīng)用程序構(gòu)建和部署過(guò)程。

這種機(jī)制的核心在于創(chuàng)建一個(gè)可執(zhí)行的 Fat JAR,使開(kāi)發(fā)人員能夠輕松地將整個(gè) Spring Boot 應(yīng)用程序及其依賴(lài)項(xiàng)打包成一個(gè)文件,從而實(shí)現(xiàn)一鍵啟動(dòng)和便捷部署。

以 Maven 打包為例:

對(duì)于使用 Maven 構(gòu)建的 Spring Boot 應(yīng)用程序,spring-boot-maven-plugin 是負(fù)責(zé)處理 Fat JAR 構(gòu)建的關(guān)鍵插件。

在 pom.xml 文件中,通常會(huì)看到以下配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
            <configuration>
                <mainClass>${start-class}</mainClass>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

通過(guò)使用 mvn package命令,Maven 將首先按照標(biāo)準(zhǔn)流程構(gòu)建項(xiàng)目。

隨后,spring-boot-maven-plugin將執(zhí)行repackage目標(biāo),該目標(biāo)會(huì)將生成的標(biāo)準(zhǔn) JAR 文件重新打包為一個(gè)包含所有依賴(lài)項(xiàng)和適當(dāng)啟動(dòng)信息的 Fat JAR。

生成的 JAR 隨后可以直接通過(guò)java -jar命令啟動(dòng)。

Spring Boot 應(yīng)用程序的打包機(jī)制確保生成的包不僅包括項(xiàng)目本身的類(lèi),還包括所有必要的運(yùn)行時(shí)依賴(lài)項(xiàng),以及特定的元數(shù)據(jù)(如 MANIFEST.MF 文件中的主類(lèi)信息)。

這一功能大大簡(jiǎn)化了部署過(guò)程,并有助于提高應(yīng)用程序的可移植性和可維護(hù)性。Fat JAR 的內(nèi)容包括:

META-INF/:包含 MANIFEST.MF 文件和其他元數(shù)據(jù),其中 Main-Class 屬性指向 Spring Boot 啟動(dòng)類(lèi)。

BOOT-INF/classes/:存儲(chǔ)項(xiàng)目的類(lèi)文件和資源文件。

BOOT-INF/lib/:保存所有依賴(lài)的 JAR 文件,包括 Spring Boot 啟動(dòng)依賴(lài)項(xiàng)和其他第三方庫(kù)。

(如果項(xiàng)目中有靜態(tài)資源文件,在 BOOT-INF 下還會(huì)有相應(yīng)的目錄,如 static、templates等。)

三、Spring Boot 啟動(dòng)器與加載機(jī)制

Spring Boot 應(yīng)用程序 JAR 能夠直接運(yùn)行,主要依賴(lài)于其啟動(dòng)器和加載機(jī)制,這通過(guò) MANIFEST.MF 文件和內(nèi)部的類(lèi)加載邏輯來(lái)實(shí)現(xiàn)。

3.1 什么是 MANIFEST.MF 文件?

MANIFEST.MF 是 JAR 文件中的標(biāo)準(zhǔn)元數(shù)據(jù)文件,它包含了 JAR 包的基本信息和運(yùn)行指令。

在 Spring Boot 應(yīng)用程序的 JAR 中,MANIFEST.MF 文件尤為重要,因?yàn)樗O(shè)置了 Main-Class屬性,指明了用于啟動(dòng)整個(gè)應(yīng)用程序的類(lèi)。

這個(gè)類(lèi)通常是 org.springframework.boot.loader.JarLauncher 或者 Spring Boot 提供的其他啟動(dòng)類(lèi)。

Main-Class 屬性指向的是 JarLauncher 類(lèi),這個(gè)類(lèi)是 Spring Boot 自定義類(lèi)加載系統(tǒng)的一部分。

JarLauncher 繼承了 org.springframework.boot.loader.Launcher,專(zhuān)門(mén)用于啟動(dòng)以 Fat JAR 打包的 Spring Boot 應(yīng)用程序。

JarLauncher 負(fù)責(zé)創(chuàng)建類(lèi)加載器 LaunchedURLClassLoader。

當(dāng)使用 java -jar 命令執(zhí)行 Spring Boot JAR 文件時(shí),JVM 使用 MANIFEST.MF 文件中的 Main-Class 屬性來(lái)啟動(dòng)指定的啟動(dòng)器。

JarLauncher 從源代碼中檢索 MainClass。

Spring Boot 啟動(dòng)類(lèi)加載器使用的 LaunchedURLClassLoader 首先讀取 MANIFEST.MF 中的其他屬性,例如 Start-Class(標(biāo)識(shí)應(yīng)用程序的實(shí)際主類(lèi))和 Spring-Boot-Lib(指向內(nèi)部依賴(lài)庫(kù)的位置)。

3.2 啟動(dòng)類(lèi)加載器的工作流程

當(dāng)啟動(dòng)類(lèi)加載器啟動(dòng)時(shí),它根據(jù) MANIFEST.MF 文件中的信息組織類(lèi)路徑,確保所有內(nèi)部依賴(lài)庫(kù)被正確加載。

加載器區(qū)分 BOOT-INF/classes 中的應(yīng)用程序類(lèi)和 BOOT-INF/lib 中的依賴(lài)庫(kù),并分別處理它們,將它們添加到類(lèi)加載器的搜索路徑中。

加載器加載并執(zhí)行實(shí)際的 Start-Class,即應(yīng)用程序的主類(lèi),從而觸發(fā) Spring Boot 框架的初始化和啟動(dòng)過(guò)程。例如,在一個(gè)示例應(yīng)用程序中,主類(lèi)可能是:com.springboot.base.SpringBootBaseApplication。

Spring Boot 的啟動(dòng)器與加載器機(jī)制有效地管理并執(zhí)行自包含的 JAR 文件。

我們不再需要擔(dān)心復(fù)雜的類(lèi)路徑配置和依賴(lài)加載,一個(gè)簡(jiǎn)單的命令就可以啟動(dòng)一個(gè)完整的獨(dú)立應(yīng)用程序。

3.3 嵌入式 Web 容器

Spring Boot 的一個(gè)關(guān)鍵功能是其無(wú)縫集成并嵌入各種輕量級(jí) Web 容器,如 Apache Tomcat、Jetty、Undertow 和 Reactor Netty(用于響應(yīng)式編程模型)。

嵌入式 Web 容器的引入極大地簡(jiǎn)化了 Web 應(yīng)用程序的部署過(guò)程,避免了單獨(dú)安裝和配置 Web 服務(wù)器的需求(如過(guò)去必須本地安裝 Tomcat)。

當(dāng) Spring Boot 應(yīng)用程序包含 spring-boot-starter-web 依賴(lài)時(shí),嵌入式 Web 容器會(huì)自動(dòng)配置并啟動(dòng)。

在 Spring Boot 應(yīng)用程序啟動(dòng)過(guò)程中,嵌入式容器被初始化并綁定到特定端口,以提供 HTTP 服務(wù)。

Spring Boot 嵌入式 Web 容器的優(yōu)勢(shì)包括將 Web 容器嵌入到應(yīng)用程序中,從而簡(jiǎn)化了部署,僅需一個(gè) JAR 文件即可在干凈的環(huán)境中運(yùn)行應(yīng)用程序。

這避免了與現(xiàn)有 Web 服務(wù)器版本或配置不當(dāng)?shù)臎_突。同時(shí),它加速了啟動(dòng)過(guò)程,特別是在開(kāi)發(fā)和測(cè)試階段,實(shí)現(xiàn)了接近即時(shí)的熱重啟。

此外,它通過(guò)在開(kāi)發(fā)和生產(chǎn)環(huán)境中使用相同的 Web 容器,提高了應(yīng)用程序的穩(wěn)定性,減少了由環(huán)境差異引起的問(wèn)題。

盡管是嵌入式的,容器仍然可以完全配置,如端口設(shè)置、連接限制和 SSL 配置,以滿(mǎn)足各種需求。

嵌入式 Web 容器真正實(shí)現(xiàn)了 Spring Boot 的“開(kāi)箱即用”理念。

3.4 自動(dòng)配置和類(lèi)路徑掃描

Spring Boot 的核心特性之一是其強(qiáng)大的自動(dòng)配置能力,使應(yīng)用程序幾乎無(wú)需配置就能快速啟動(dòng)和運(yùn)行。

當(dāng)應(yīng)用程序啟動(dòng)時(shí),Spring Boot 會(huì)讀取 resource/META-INF/spring.factories 文件,該文件列出了所有可用的自動(dòng)配置類(lèi)。

當(dāng)它檢測(cè)到應(yīng)用環(huán)境中的相應(yīng)自動(dòng)配置類(lèi)時(shí),這些類(lèi)將生效,通過(guò)帶有 @Configuration 注解的類(lèi)創(chuàng)建并注冊(cè) Bean 到 Spring 容器中,從而實(shí)現(xiàn)自動(dòng) Bean 配置。

注意:

從 Spring Boot 3.x 開(kāi)始,自動(dòng)配置類(lèi)將從org.springframework.boot.autoconfigure.AutoConfiguration.imports 讀取,而不是 resource/META-INF/spring.factories 。有關(guān)更多詳細(xì)信息,請(qǐng)參閱文章: 華為面試:如何在 Spring Boot 中自定義 Starter?。

Spring Boot 還使用條件注解(如 @ConditionalOnClass、@ConditionalOnMissingBean 等)來(lái)智能地決定何時(shí)應(yīng)用特定的配置。

這些注解可以根據(jù)類(lèi)路徑中是否存在特定的類(lèi)、系統(tǒng)屬性或環(huán)境變量來(lái)激活特定的自動(dòng)配置類(lèi)。

這意味著只有在滿(mǎn)足某些條件時(shí),才會(huì)創(chuàng)建并注入 Bean。

應(yīng)用程序的主類(lèi)帶有 @SpringBootApplication 注解,這是一個(gè)組合注解,包含了 @SpringBootConfiguration、@EnableAutoConfiguration 和 @ComponentScan 的功能。
具體來(lái)說(shuō):

@SpringBootConfiguration:一個(gè) Spring 配置類(lèi),能夠替代 @Configuration 注解,聲明當(dāng)前類(lèi)為 Spring 配置類(lèi),包含一系列 @Bean 方法或 @ConfigurationProperties 配置。

@EnableAutoConfiguration:?jiǎn)⒂米詣?dòng)配置功能,指示 Spring Boot 根據(jù)應(yīng)用程序類(lèi)路徑中的依賴(lài)項(xiàng)自動(dòng)配置 Bean。

@ComponentScan:自動(dòng)掃描和管理 Spring 組件,包括帶有 @Service、@Repository、@Controller 和 @Component 注解的類(lèi)。此注解允許 Spring Boot 自動(dòng)發(fā)現(xiàn)和管理應(yīng)用程序中的各種組件,并將其注冊(cè)為 Spring 容器中的 Bean。

通過(guò)這些機(jī)制,Spring Boot 能夠智能識(shí)別項(xiàng)目依賴(lài),自動(dòng)配置 Bean,并確保通過(guò)類(lèi)路徑掃描正確初始化和管理所有相關(guān)組件和服務(wù)。

這使得我們可以專(zhuān)注于開(kāi)發(fā)業(yè)務(wù)邏輯,而無(wú)需擔(dān)心基礎(chǔ)設(shè)施級(jí)別的配置問(wèn)題。

結(jié)論

Spring Boot 應(yīng)用程序打包為 JAR 文件后,能夠通過(guò)java -jar命令直接運(yùn)行,這得益于構(gòu)建過(guò)程中進(jìn)行的特殊設(shè)計(jì)和配置。具體來(lái)說(shuō):

1、Fat/Uber JAR:Spring Boot 使用 spring-boot-maven-plugin(或相應(yīng)的 Gradle 插件)將項(xiàng)目及其所有依賴(lài)項(xiàng)打包成一個(gè)自包含的 JAR 文件,稱(chēng)為 "Fat JAR" 或 "Uber JAR"。這意味著它不僅包含自己的類(lèi)文件,還包括運(yùn)行應(yīng)用程序所需的所有第三方庫(kù)。

2、Manifest.MF:在打包過(guò)程中,該插件修改了 JAR 內(nèi)的元數(shù)據(jù)文件 MANIFEST.MF。在 MANIFEST.MF 中,Main-Class 屬性被指定,指向內(nèi)置的 Spring Boot 啟動(dòng)類(lèi)(如 org.springframework.boot.loader.JarLauncher),該類(lèi)知道如何正確啟動(dòng) Spring Boot 應(yīng)用程序。
3、嵌入式 Servlet 容器:Spring Boot 默認(rèn)集成了嵌入式 Web 容器,如 Tomcat、Jetty 或 Undertow,使得 Web 應(yīng)用程序無(wú)需外部服務(wù)器環(huán)境即可運(yùn)行。

4、 啟動(dòng)類(lèi)加載器:當(dāng)使用 java -jar 命令運(yùn)行 Spring Boot 應(yīng)用程序時(shí),JVM 會(huì)根據(jù) MANIFEST.MF 中的 Main-Class 屬性找到并運(yùn)行指定的啟動(dòng)類(lèi)。該啟動(dòng)類(lèi)加載器能夠解壓并加載內(nèi)部依賴(lài)庫(kù),并找到實(shí)際的主應(yīng)用程序類(lèi)(無(wú)論是在 spring-boot-starter-parent中,還是帶有 @SpringBootApplication 注解的類(lèi)),執(zhí)行其 main 方法。

5、類(lèi)路徑掃描和自動(dòng)配置:Spring Boot 應(yīng)用程序使用特定的類(lèi)路徑掃描機(jī)制和自動(dòng)配置功能,在啟動(dòng)時(shí)識(shí)別并自動(dòng)配置應(yīng)用程序所需的服務(wù)和組件,大大簡(jiǎn)化了傳統(tǒng) Java 應(yīng)用程序的配置和部署過(guò)程。

通過(guò)精心設(shè)計(jì)的打包過(guò)程和啟動(dòng)類(lèi),Spring Boot 實(shí)現(xiàn)了生成的 JAR 文件作為獨(dú)立應(yīng)用程序運(yùn)行,顯著降低了部署和操作的復(fù)雜性。

在我編寫(xiě)Spring Boot 3.x相關(guān)技術(shù)文章的過(guò)程中,許多核心內(nèi)容和技術(shù)實(shí)現(xiàn)都參考了《深入淺出Spring Boot 3.x》這本書(shū)。該書(shū)深入淺出地講解了Spring Boot 3.x的各項(xiàng)關(guān)鍵技術(shù),涵蓋了Spring全注解配置、數(shù)據(jù)庫(kù)編程(JPA、MyBatis、JDBC)、事務(wù)管理、NoSQL數(shù)據(jù)庫(kù)(如Redis和MongoDB),以及Spring MVC、REST API開(kāi)發(fā)等內(nèi)容。書(shū)中還結(jié)合了當(dāng)前互聯(lián)網(wǎng)業(yè)務(wù)場(chǎng)景,探討了搶購(gòu)業(yè)務(wù)、微服務(wù)架構(gòu)(Spring Cloud Alibaba)、系統(tǒng)監(jiān)控和容器部署等實(shí)戰(zhàn)項(xiàng)目,是我在文章中引用的重要技術(shù)依據(jù)。這本書(shū)對(duì)深入理解和運(yùn)用Spring Boot 3.x提供了很大幫助,特別適合希望快速掌握企業(yè)級(jí)開(kāi)發(fā)的開(kāi)發(fā)人員。

到此這篇關(guān)于Spring Boot Jar 文件為何能直接運(yùn)行?的文章就介紹到這了,更多相關(guān)Spring Boot Jar 文件運(yùn)行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot?pdf打印及預(yù)覽(openhtmltopdf+freemarker)

    SpringBoot?pdf打印及預(yù)覽(openhtmltopdf+freemarker)

    這篇文章主要介紹了SpringBoot?pdf打印及預(yù)覽(openhtmltopdf+freemarker)
    2023-05-05
  • Java如何優(yōu)雅地關(guān)閉資源try-with-resource及其異常抑制

    Java如何優(yōu)雅地關(guān)閉資源try-with-resource及其異常抑制

    這篇文章主要介紹了Java如何優(yōu)雅地關(guān)閉資源try-with-resource及其異常抑制,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Spring中@RequestParam使用及遇到的一些坑

    Spring中@RequestParam使用及遇到的一些坑

    @RequestParam 主要用于將請(qǐng)求參數(shù)區(qū)域的數(shù)據(jù)映射到控制層方法的參數(shù)上,下面這篇文章主要給大家介紹了關(guān)于Spring中@RequestParam使用及遇到的一些坑,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Spring IOC推導(dǎo)與DI構(gòu)造器注入超詳細(xì)講解

    Spring IOC推導(dǎo)與DI構(gòu)造器注入超詳細(xì)講解

    這篇文章主要介紹了Spring IOC推導(dǎo)與DI構(gòu)造器注入,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-02-02
  • SpringBoot自動(dòng)裝配Import示例詳解

    SpringBoot自動(dòng)裝配Import示例詳解

    SpringBoot中@Import注解的使用可以幫助開(kāi)發(fā)者將指定的Bean或配置類(lèi)導(dǎo)入到IOC容器中,該注解支持四種用法:導(dǎo)入Bean、導(dǎo)入配置類(lèi)、實(shí)現(xiàn)ImportSelector接口和實(shí)現(xiàn),感興趣的朋友一起看看吧
    2024-09-09
  • Spring框架花式創(chuàng)建Bean的n種方法(小結(jié))

    Spring框架花式創(chuàng)建Bean的n種方法(小結(jié))

    這篇文章主要介紹了Spring框架花式創(chuàng)建Bean的n種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • spring如何加載配置多個(gè)配置文件

    spring如何加載配置多個(gè)配置文件

    這篇文章主要介紹了spring如何加載配置多個(gè)配置文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java的Socket網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)入門(mén)教程

    Java的Socket網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)入門(mén)教程

    這篇文章主要介紹了Java的Socket網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)入門(mén)教程,包括基于TCP/IP和UDP協(xié)議的簡(jiǎn)單實(shí)例程序講解,需要的朋友可以參考下
    2016-01-01
  • Java 實(shí)現(xiàn)分布式服務(wù)的調(diào)用鏈跟蹤

    Java 實(shí)現(xiàn)分布式服務(wù)的調(diào)用鏈跟蹤

    分布式服務(wù)中完成某一個(gè)業(yè)務(wù)動(dòng)作,需要服務(wù)之間的相互協(xié)作才能完成,在這一次動(dòng)作引起的多服務(wù)的聯(lián)動(dòng)我們需要用1個(gè)唯一標(biāo)識(shí)關(guān)聯(lián)起來(lái),關(guān)聯(lián)起來(lái)就是調(diào)用鏈的跟蹤。本文介紹了Java 實(shí)現(xiàn)分布式服務(wù)的調(diào)用鏈跟蹤的步驟
    2021-06-06
  • springboot在filter中如何用threadlocal存放用戶(hù)身份信息

    springboot在filter中如何用threadlocal存放用戶(hù)身份信息

    這篇文章主要介紹了springboot中在filter中如何用threadlocal存放用戶(hù)身份信息,本文章主要描述通過(guò)springboot的filter類(lèi),在過(guò)濾器中設(shè)置jwt信息進(jìn)行身份信息保存的方法,需要的朋友可以參考下
    2024-07-07

最新評(píng)論