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

springboot命令java -jar執(zhí)行流程

 更新時(shí)間:2025年08月11日 11:09:18   作者:夜之雨  
Spring Boot打包使用Maven生成jar,包含配置文件、類文件及MANIFEST.MF,啟動(dòng)時(shí)通過JarLauncher加載,掃描類路徑,設(shè)置自定義類加載器,反射執(zhí)行主類,本文給大家介紹springboot命令java -jar執(zhí)行流程,感興趣的朋友跟隨小編一起看看吧

一 打包

1.1 命令

mvn clean package

使用命令打包,jar文件路徑:target/*.jar

1.2 包結(jié)構(gòu)

spring-0.0.1-SNAPSHOT.jar
├── META-INF
│   └── maven(主要是pom文件)
│   └── MANIFEST.MF
├── BOOT-INF
│   ├── classes
│   │   └── 應(yīng)用程序類
│   └── lib
│       └── 第三方依賴jar
└── org
    └── springframework
        └── boot
            └── loader
                └── springboot啟動(dòng)程序

application.yml
com/
META/INF/
*.properties

application.yml:應(yīng)用配置參數(shù)信息
com文件夾:編譯后的class文件
MANIFEST.MF 清單文件
MANIFEST.MF:應(yīng)用jar打包信息
org:來自spring-boot-loader(用于項(xiàng)目的打包和加載)jar包編譯之后的內(nèi)容
start-Class: com.meishi.sales.SalesBootstrap springboot 提供的類加載器 也就是@springBootAplication注解標(biāo)示的類
Main-Class: org.springframework.boot.loader.JarLauncher 程序啟動(dòng)入口類

二 執(zhí)行流程

2.1 依賴

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

2.2 JarLauncher

JarLauncher 程序啟動(dòng)入口類 將其對(duì)應(yīng)jar加載到內(nèi)存中 類路徑下

public class JarLauncher extends ExecutableArchiveLauncher {
	static final String BOOT_INF_CLASSES = "BOOT-INF/classes/";
	static final String BOOT_INF_LIB = "BOOT-INF/lib/";
	//在父類方法中創(chuàng)建了歸檔文件
	public JarLauncher() {
	}
	protected JarLauncher(Archive archive) {
		super(archive);
	}
	@Override
	protected boolean isNestedArchive(Archive.Entry entry) {
		//如果是一個(gè)目錄
		if (entry.isDirectory()) {
			//如果返回的目錄名字 != "BOOT-INF/classes/"
			return entry.getName().equals(BOOT_INF_CLASSES); 
		}
		//如果是一個(gè)文件 是不是以"BOOT-INF/lib/" 開頭
		return entry.getName().startsWith(BOOT_INF_LIB);
	}
	public static void main(String[] args) throws Exception {
		//先通過無參構(gòu)造判斷是否為jar再創(chuàng)建歸檔文件archive再調(diào)用父類launcher的launch方法
		new JarLauncher().launch(args);
	}
}

2.3 總結(jié)

1、spring jar包啟動(dòng)時(shí)springboot會(huì)掃描配置清單的Main-Class指定的類執(zhí)行其springboot-loader這個(gè)啟動(dòng)包的JarLauncher的main方法
2、去掃描 boot-inf 中的classes包和lib包 存儲(chǔ)到List集合當(dāng)中。
3、將自定義的加載類LaunchedURLClassLoaderset到上下文去加載對(duì)應(yīng)class 到j(luò)vm當(dāng)中4、在通過start-Class指定的springbootAppliction類獲取到當(dāng)前springboot的 啟動(dòng)類 5、通過反射獲取到main的這個(gè)方法然后invoke啟動(dòng)

到此這篇關(guān)于springboot命令java -jar執(zhí)行流程的文章就介紹到這了,更多相關(guān)springboot java -jar內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中操作超大數(shù)的方法

    Java中操作超大數(shù)的方法

    本篇文章是小編在網(wǎng)上整理的關(guān)于java操作超大數(shù)的方法以及解決思路,有興趣的朋友參考學(xué)習(xí)下。
    2018-06-06
  • java Runtime如何執(zhí)行多條命令

    java Runtime如何執(zhí)行多條命令

    這篇文章主要介紹了java Runtime如何執(zhí)行多條命令,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Spring解決循環(huán)依賴的方法(三級(jí)緩存)

    Spring解決循環(huán)依賴的方法(三級(jí)緩存)

    今天,我們要說的是spring是如何解決循環(huán)依賴的。對(duì)于一個(gè)問題說解決之前,我們首先要先明確形成問題的本因。那么循環(huán)依賴,何為循環(huán)依賴呢?感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • Spring BPP中如何優(yōu)雅的創(chuàng)建動(dòng)態(tài)代理Bean詳解

    Spring BPP中如何優(yōu)雅的創(chuàng)建動(dòng)態(tài)代理Bean詳解

    這篇文章主要給大家介紹了關(guān)于Spring BPP中如何優(yōu)雅的創(chuàng)建動(dòng)態(tài)代理Bean的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • springboot創(chuàng)建的web項(xiàng)目整合Quartz框架的項(xiàng)目實(shí)踐

    springboot創(chuàng)建的web項(xiàng)目整合Quartz框架的項(xiàng)目實(shí)踐

    本文主要介紹了springboot創(chuàng)建的web項(xiàng)目整合Quartz框架的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Java中文件讀寫操作與常用技巧分享

    Java中文件讀寫操作與常用技巧分享

    在 Java I/O 體系中,F(xiàn)ile 類是唯一代表磁盤文件本身的對(duì)象,而File 類定義了一些與平臺(tái)無關(guān)的方法來操作文件,所以下面我們一起來看看 File 類有哪些操作方法吧
    2023-06-06
  • java基于Apache FTP實(shí)現(xiàn)文件上傳、下載、修改文件名、刪除

    java基于Apache FTP實(shí)現(xiàn)文件上傳、下載、修改文件名、刪除

    本篇文章主要介紹了Apache FTP實(shí)現(xiàn)文件上傳、下載、修改文件名、刪除,實(shí)現(xiàn)了FTP文件上傳(斷點(diǎn)續(xù)傳)、FTP文件下載、FTP文件重命名、FTP文件刪除等功能,有需要的可以了解一下。
    2016-11-11
  • 淺析SpringBoot整合Mybatis如何實(shí)現(xiàn)二級(jí)緩存

    淺析SpringBoot整合Mybatis如何實(shí)現(xiàn)二級(jí)緩存

    二級(jí)緩存,是指多個(gè)Sqlsession之間共享數(shù)據(jù),但是也可以使用Redis這樣的緩存作為存儲(chǔ)點(diǎn),但是不支持mybatisplus 里的方法,本文我們就來聊聊SpringBoot整合Mybatis實(shí)現(xiàn)二級(jí)緩存的相關(guān)方法吧
    2025-05-05
  • 教你怎么用Java數(shù)組和鏈表實(shí)現(xiàn)棧

    教你怎么用Java數(shù)組和鏈表實(shí)現(xiàn)棧

    本篇文章為大家詳細(xì)介紹了怎么用Java數(shù)組和鏈表實(shí)現(xiàn)棧,文中有非常詳細(xì)的代碼示例及注釋,對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • redis在java中的使用(實(shí)例講解)

    redis在java中的使用(實(shí)例講解)

    下面小編就為大家?guī)硪黄猺edis 在java中的使用(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08

最新評(píng)論

东城区| 桐城市| 长宁县| 承德县| 大庆市| 普安县| 车致| 新竹县| 澳门| 北票市| 昭平县| 周宁县| 芦溪县| 淮阳县| 社旗县| 铜梁县| 丰县| 永登县| 河东区| 广汉市| 沽源县| 清苑县| 台中市| 九台市| 北流市| 长海县| 南昌县| 扎兰屯市| 九寨沟县| 葵青区| 丹阳市| 民乐县| 宜兴市| 辰溪县| 西平县| 天津市| 青州市| 庄河市| 时尚| 灵璧县| 三原县|