中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot中的(org.springframework.boot.loader)類加載器實現過程

發布時間:2020-11-06 14:43:44 來源:億速云 閱讀:571 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關springboot中的(org.springframework.boot.loader)類加載器實現過程,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

類加載器的分類。

springboot中的(org.springframework.boot.loader)類加載器實現過程

試驗:使用maven打包

<build>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
     <execution>
      <id>copy-dependencies</id>
      <phase>prepare-package</phase>
      <goals>
       <goal>copy-dependencies</goal>
      </goals>
      <configuration>
       <outputDirectory>${project.build.directory}/lib</outputDirectory>
       <overWriteReleases>false</overWriteReleases>
       <overWriteSnapshots>false</overWriteSnapshots>
       <overWriteIfNewer>true</overWriteIfNewer>
      </configuration>
     </execution>
    </executions>
   </plugin>
   <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
     <fork>true</fork>
     <mainClass>啟動類的完整路徑</mainClass>
     <excludes>
      <exclude>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
      </exclude>
     </excludes>
     <layout>ZIP</layout>
     <includes>
      <include>
       <groupId>nothing</groupId>
       <artifactId>nothing</artifactId>
      </include>
     </includes>
    </configuration>
    <executions>
     <execution>
      <goals>
       <goal>repackage</goal>
      </goals>
     </execution>
    </executions>
   </plugin>
  </plugins>
 </build>

各個配置項的作用自行百度~

這樣生成的jar包,用壓縮工具打開以后是這樣

springboot中的(org.springframework.boot.loader)類加載器實現過程

在META-INF下打開MANIFEST.MF文件看看(記事本就可以打開)

springboot中的(org.springframework.boot.loader)類加載器實現過程

可以看到這里的類加載器是:PropertiesLauncher,文檔百度翻譯如下:

Launcher for archives with user-configured classpath and main class via a properties file. This model is often more flexible and more amenable to creating well-behaved OS-level services than a model based on executable jars.
Looks in various places for a properties file to extract loader settings, defaulting to application.properties either on the current classpath or in the current working directory. The name of the properties file can be changed by setting a System property loader.config.name (e.g. -Dloader.config.name=foo will look for foo.properties. If that file doesn't exist then tries loader.config.location (with allowed prefixes classpath: and file: or any valid URL). Once that file is located turns it into Properties and extracts optional values (which can also be provided overridden as System properties in case the file doesn't exist):
loader.path: a comma-separated list of directories (containing file resources and/or nested archives in .jar or .zip or archives) or archives to append to the classpath. BOOT-INF/classes,BOOT-INF/lib in the application archive are always used
loader.main: the main method to delegate execution to once the class loader is set up. No default, but will fall back to looking for a Start-Class in a MANIFEST.MF, if there is one in ${loader.home}/META-INF.

啟動程序,用于通過屬性文件使用用戶配置的類路徑和主類進行歸檔。與基于可執行jar的模型相比,這種模型通常更靈活,更易于創建性能良好的OS級服務。

在不同位置查找屬性文件以提取加載程序設置,默認為應用程序.屬性在當前類路徑或當前工作目錄中。屬性文件的名稱可以通過設置系統屬性來更改加載程序.config.name(例如-Dloader.config.name=foo會尋找食品屬性. 如果該文件不存在,則嘗試loader.config.location(使用允許的前綴classpath:和file:或任何有效的URL)。找到該文件后,將其轉換為屬性并提取可選值(如果該文件不存在,也可以將其作為系統屬性進行覆蓋):

加載程序.path:以逗號分隔的目錄列表(包含文件資源和/或.jar或.zip中的嵌套存檔文件)或要附加到類路徑的存檔文件。總是使用應用程序檔案中的BOOT-INF/classes、BOOT-INF/lib

裝載機.main:設置類裝入器后將執行委托給的主方法。沒有默認值,但將返回到在清單.MF,如果有${裝載機.home}/中導。

這種也是配置:使用jar包外部的配置文件的啟動方式的方法。在linux我們的啟動腳本要使用對應的類加載器來啟動。

springboot中的(org.springframework.boot.loader)類加載器實現過程

如果你配置成其他的( <layout>ZIP</layout>此配置項去掉,main-class就會變成JarLauncher)比如:JarLauncher

Launcher for JAR based archives. This launcher assumes that dependency jars are included inside a /BOOT-INF/lib directory and that application classes are included inside a /BOOT-INF/classes directory.

基于JAR的檔案的啟動程序。這個啟動程序假設依賴項jar包含在/BOOT-INF/lib目錄中,應用程序類包含在/BOOT-INF/classes目錄中。

就會有如下的錯誤:項目啟動失敗。

springboot中的(org.springframework.boot.loader)類加載器實現過程

springboot項目啟動,調用的是相應的類加載器的main方法,而不是我們自己編寫的SpringApplication

Spring Boot Loader提供了一套標準用于執行SpringBoot打包出來的jar,這套標準就是我們的類加載器

下面是一個例子,圖中有構造方法,和類方法。

springboot中的(org.springframework.boot.loader)類加載器實現過程

看完上述內容,你們對springboot中的(org.springframework.boot.loader)類加載器實現過程有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

闸北区| 珲春市| 宣化县| 青河县| 县级市| 石景山区| 思南县| 鞍山市| 明星| 咸丰县| 涟水县| 开化县| 滦南县| 云阳县| 吴江市| 宜君县| 靖江市| 赫章县| 香河县| 谢通门县| 额尔古纳市| 丘北县| 鄂尔多斯市| 三都| 慈溪市| 鱼台县| 张家口市| 玉林市| 左贡县| 西峡县| 民县| 高台县| 襄垣县| 昌江| 高密市| 贵港市| 台州市| 武穴市| 古交市| 伊吾县| 德庆县|