真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

spring-boot-load模塊在SpringBoot中的作用是什么

本篇文章為大家展示了spring-boot-load模塊在Spring Boot中的作用是什么,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

在永昌等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),網(wǎng)絡(luò)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),永昌網(wǎng)站建設(shè)費(fèi)用合理。

一、前言

正常情況下classloader只能找到j(luò)ar里面當(dāng)前目錄或者文件類里面的*.class文件。為了能夠加載嵌套jar里面的資源之前都是把嵌套jar里面的class文件和應(yīng)用的class文件打包為一個jar,這樣就不存在嵌套jar了,但是這樣做就不能很清晰的知道應(yīng)用到底依賴了哪些東西,哪些是應(yīng)用自己的,另外多個jar里面的class可能內(nèi)容不一樣但是文件名卻一樣。springboot中spring-boot-loader就是為優(yōu)雅解決這個問題而誕生的。

spring-boot-loader模塊允許我們使用java -jar archive.jar運(yùn)行包含嵌套依賴jar的jar或者war文件,它提供了三種類啟動器 (JarLauncher, WarLauncher and PropertiesLauncher),這些類啟動器的目的一樣都是為了能夠加載嵌套在jar里面的資源(比如class文件,配置文件等)。[Jar|War]Launcher固定去查找當(dāng)前jar的lib目錄里面的嵌套jar文件里面的資源。

二、spring-boot-loader模塊提供的jar目錄結(jié)構(gòu)

Springboot中jar文件格式固定如下:

archive.jar
 |
 +-META-INF(1)
 | +-MANIFEST.MF
 +-org(2)
 | +-springframework
 | +-boot
 | +-loader
 |  +-
 +-com(3)
 | +-mycompany
 | + project
 | +-YouClasses.class
 +-lib(4)
 +-dependency1.jar
 +-dependency2.jar
  • 結(jié)構(gòu)(1)jar文件中MANIFEST.MF文件存放處

  • 結(jié)構(gòu)(2) Spring-boot-loader本身需要的class放置處

  • 結(jié)構(gòu)(3) 應(yīng)用本身的文件放置處

  • 結(jié)構(gòu)(4)應(yīng)用依賴的jar固定放到lib目錄。

那么spring-boot是如何去按照這個結(jié)構(gòu)加載資源那?

  • 首先在打包時候會使用spring-boot-maven-plugin插件重寫打成的jar文件,會設(shè)置META-INF/MANIFEST.MF中的

Main-Class: org.springframework.boot.loader.JarLauncher 
Start-Class: com.mycompany.project.MyApplication

并拷貝spring-boot-loader包里面的class文件到結(jié)構(gòu)(2),應(yīng)用依賴拷貝到(4)應(yīng)用類拷貝到(3)

  • 通過java -jar archive.jar 運(yùn)行時候Launcher會去加載JarLauncher類并執(zhí)行其中的main函數(shù),JarLauncher主要關(guān)心構(gòu)造一個合適的URLClassLoader加載器用來調(diào)用我們應(yīng)用程序(MyApplication)的main方法。

三、spring-boot-maven-plugin插件打包流程分析

spring-boot-load模塊在Spring Boot中的作用是什么 

注:這里需要思考下為何要拷貝本來應(yīng)該放入到lib里面的spring-boot-loader.jar里面的class到結(jié)構(gòu)(2)?

四、JarLauncher執(zhí)行流程分析

spring-boot-load模塊在Spring Boot中的作用是什么 

看完這個流程在分析下第三節(jié)留的問題,如流程圖首先使用Appclassloader加載了JarLauncher類并創(chuàng)建了LaunchedURLClassLoader類,而LaunchedURLClassLoader是屬于spring-boot-loader.jar包里面的,而Appclassloader是普通的加載器不能加載嵌套的jar里面的文件,所以如果把spring-boot-loader.jar放到lib 目錄下,Appclassloader將找不到LaunchedURLClassLoader。所以在打包時候

拷貝本來應(yīng)該放入到lib里面的spring-boot-loader.jar里面的class到結(jié)構(gòu)(2)。

上述內(nèi)容就是spring-boot-load模塊在Spring Boot中的作用是什么,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前標(biāo)題:spring-boot-load模塊在SpringBoot中的作用是什么
標(biāo)題URL:http://weahome.cn/article/jjehgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部