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

詳解SpringBoot的jar為什么可以直接運(yùn)行

 更新時(shí)間:2024年02月25日 09:52:45   作者:飛翔的佩奇  
SpringBoot提供了一個(gè)插件spring-boot-maven-plugin用于把程序打包成一個(gè)可執(zhí)行的jar包,本文給大家介紹了為什么SpringBoot的jar可以直接運(yùn)行,文中有相關(guān)的代碼示例供大家參考,感興趣的朋友可以參考下

一、為什么SpringBoot的jar可以直接運(yùn)行?

1.SpringBoot提供了一個(gè)插件spring-boot-maven-plugin用于把程序打包成一個(gè)可執(zhí)行的jar包。

2.Spring Boot應(yīng)用打包之后,生成一個(gè)Fat jar(jar包中包含jar),包含了應(yīng)用依賴的jar包和Spring Boot loader相關(guān)的
類。

3.java -jar會(huì)去找jar中的manifest文件,在那里面找到真正的啟動(dòng)類(Main-Class);

4.Fat jar的啟動(dòng)Main函數(shù)是JarLauncher,它負(fù)責(zé)創(chuàng)建一個(gè)LaunchedURLClassLoader來加載boot-lib下面的jar,并以一個(gè)新線程啟動(dòng)應(yīng)用的啟動(dòng)類的Main函數(shù)(找到manifest中的Start-Class)。

二、知識(shí)延伸

Spring Boot可以使用JAR包啟動(dòng)的原因

  1. 嵌入式Servlet容器:Spring Boot默認(rèn)使用嵌入式的Servlet容器(如Tomcat、Jetty、Undertow等)。這使得應(yīng)用程序可以打包成一個(gè)可執(zhí)行的JAR文件,包含了所有的依賴以及一個(gè)嵌入式的Servlet容器,而無需外部容器的支持。

  2. Spring Boot Maven插件:Spring Boot提供了Maven和Gradle插件,可以將應(yīng)用程序打包成可執(zhí)行的JAR文件。這個(gè)JAR文件中包含了應(yīng)用程序的所有依賴以及一個(gè)主類,使得它可以被直接運(yùn)行。

  3. 自動(dòng)化配置:Spring Boot采用自動(dòng)化配置的方式,大大減少了開發(fā)者的配置工作。這使得應(yīng)用程序可以更容易地打包成一個(gè)獨(dú)立的可執(zhí)行JAR文件,而不需要太多手動(dòng)配置。

  4. 內(nèi)嵌屬性文件:Spring Boot支持使用application.properties或application.yml文件來配置應(yīng)用程序。這些配置文件可以被打包進(jìn)JAR文件,使得應(yīng)用程序在不同環(huán)境中可以方便地切換配置。

總的來說,Spring Boot通過嵌入式Servlet容器、構(gòu)建工具插件以及自動(dòng)化配置等機(jī)制,使得應(yīng)用程序可以方便地打包成一個(gè)JAR文件,并通過java -jar命令直接運(yùn)行。這種方式簡(jiǎn)化了部署和運(yùn)維的流程。

原理

在Spring Boot項(xiàng)目的jar中會(huì)生成一個(gè)MANIFEST.MF文件(路徑:META-INF\MANIFEST.MF),打開該文件你會(huì)看到有一個(gè)MainClass的映射,其對(duì)應(yīng)的值是一個(gè)類,就是執(zhí)行‘java -jar’命令后正式執(zhí)行的類,mainclass類是springboot插件引入后自動(dòng)添加的

Manifest-Version: 1.0
Implementation-Title: executable-jar
Implementation-Version: 1.0-SNAPSHOT
Archiver-Version: Plexus Archiver
Built-By: Format
Start-Class: spring.study.executablejar.ExecutableJarApplication
Implementation-Vendor-Id: spring.study
Spring-Boot-Version: 1.3.5.RELEASE
Created-By: Apache Maven 3.2.3
Build-Jdk: 1.8.0_20
Implementation-Vendor: Pivotal Software, Inc.
Main-Class: org.springframework.boot.loader.JarLauncher

如果想看JarLauncher類的源碼需要手動(dòng)引入‘spring-boot-loader’依賴,其實(shí)聲明‘spring-boot-maven-plugin’插件也會(huì)自動(dòng)引入其依賴,但不能查看到源碼內(nèi)容

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

打開之后可以看到此類有一個(gè)主程序入口,main方法

protected void launch(String[] args) throws Exception {
   JarFile.registerUrlProtocolHandler();
   //自定義類加載器加載jar文件
   ClassLoader classLoader = createClassLoader(getClassPathArchives());
   //關(guān)注getMainClass方法
   launch(args, getMainClass(), classLoader);
}

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

相關(guān)文章

  • java構(gòu)造http請(qǐng)求的幾種方式(附源碼)

    java構(gòu)造http請(qǐng)求的幾種方式(附源碼)

    本文主要介紹了java構(gòu)造http請(qǐng)求的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • SpringBoot中創(chuàng)建的AOP不生效的原因及解決

    SpringBoot中創(chuàng)建的AOP不生效的原因及解決

    這篇文章主要介紹了SpringBoot中創(chuàng)建的AOP不生效的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中this和super關(guān)鍵字的使用詳解

    Java中this和super關(guān)鍵字的使用詳解

    super?代表父類的存儲(chǔ)空間標(biāo)識(shí)(可以理解為父親的引用)。?this代表當(dāng)前對(duì)象的引用(誰調(diào)用就代表誰)。本文將通過簡(jiǎn)單的示例介紹二者的使用與區(qū)別,需要的可以了解一下
    2022-10-10
  • Java后端接收前端數(shù)據(jù)的五種方法

    Java后端接收前端數(shù)據(jù)的五種方法

    本文概述了前后端分離中Vue與Java的數(shù)據(jù)交互方式,包括JSON、表單、URL參數(shù)、文件上傳及路徑參數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08
  • 利用Thumbnailator輕松實(shí)現(xiàn)圖片縮放、旋轉(zhuǎn)與加水印

    利用Thumbnailator輕松實(shí)現(xiàn)圖片縮放、旋轉(zhuǎn)與加水印

    java開發(fā)中經(jīng)常遇到對(duì)圖片的處理,JDK中也提供了對(duì)應(yīng)的工具類,不過處理起來很麻煩,Thumbnailator是一個(gè)優(yōu)秀的圖片處理的開源Java類庫(kù),處理效果遠(yuǎn)比Java API的好,這篇文章主要介紹了利用Thumbnailator如何輕松的實(shí)現(xiàn)圖片縮放、旋轉(zhuǎn)與加水印,需要的朋友可以參考下
    2017-01-01
  • spring-boot-thin-launcher插件分離jar包的依賴和配置方式

    spring-boot-thin-launcher插件分離jar包的依賴和配置方式

    這篇文章主要介紹了spring-boot-thin-launcher插件分離jar包的依賴和配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Spring Boot 2.0 設(shè)置網(wǎng)站默認(rèn)首頁(yè)的實(shí)現(xiàn)代碼

    Spring Boot 2.0 設(shè)置網(wǎng)站默認(rèn)首頁(yè)的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Spring Boot 2.0 設(shè)置網(wǎng)站默認(rèn)首頁(yè)的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2018-04-04
  • SpringBoot使用外部yml文件的兩種方法

    SpringBoot使用外部yml文件的兩種方法

    這篇文章主要介紹在springboot中如何使用依賴jar包中的yml文件,文中給出了兩種實(shí)現(xiàn)方法,并通過代碼和圖片講解的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • 詳解PipedInputStream和PipedOutputStream_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    詳解PipedInputStream和PipedOutputStream_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了管道PipedInputStream和PipedOutputStream,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java多線程讀寫鎖ReentrantReadWriteLock類詳解

    Java多線程讀寫鎖ReentrantReadWriteLock類詳解

    本文詳細(xì)講解了Java多線程讀寫鎖ReentrantReadWriteLock類,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12

最新評(píng)論

姚安县| 衢州市| 徐闻县| 刚察县| 城固县| 深水埗区| 永泰县| 磐安县| 天柱县| 瑞安市| 漠河县| 苍梧县| 庆安县| 邵东县| 敦煌市| 额尔古纳市| 苍南县| 浦城县| 安徽省| 文昌市| 松潘县| 剑川县| 黑水县| 伊宁县| 敦煌市| 屏东市| 西乡县| 若尔盖县| 正镶白旗| 鄂伦春自治旗| 丰镇市| 承德市| 泾源县| 江油市| 天水市| 昌都县| 富顺县| 突泉县| 莱州市| 富裕县| 龙胜|