簡體   English   中英

如何理解關於可執行jar的spring boot

[英]how to understand spring boot about executable jar

我是Spring Boot的新手,我看到了關於spring-boot的可執行jar。 它說:

可執行的jar和Java

Java沒有提供任何標准方法來加載嵌套的jar文件(即jar文件本身包含在jar中)。 如果您要分發自包含的應用程序,這可能會有問題。

為了解決這個問題,許多開發人員使用“超級”罐子。 一個超級jar簡單地將所有類中的所有類打包成一個存檔。 這種方法的問題在於,很難看到您在應用程序中實際使用的庫。 如果在多個罐子中使用相同的文件名(但具有不同的內容),也可能會有問題。

Spring Boot采用不同的方法,允許您直接嵌套jar。

我想知道如果超級罐子或肥胖罐子有一些缺點,那么必須重新部署整個超級罐子,可能會遇到關於NoSuchMethodError的問題。如何從超級罐子中獲取Spring啟動可執行罐子。 由於它有許多缺點,為什么彈簧靴仍然使用這種類型的罐子?

使用Spring Boot,您可以使用spring-boot-maven-plugin或spring-boot-gradle-plugin,它可以使用所有依賴項重新打包JAR。 這叫做胖JAR。 這與優步JAR不同。

Spring Boot打包:包含JAR依賴關系的JAR存檔。 Uber JAR:包含所有依賴項的已編譯類文件的JAR存檔。

所以Spring Boot就像帶有嵌入式tomcat的WAR。 這樣您就可以將其作為JAR執行。 這變成了托管雲原生應用程序的最現代方法。

理論上,如果您使用的是具有API不兼容版本的傳遞依賴性,則可以獲得NoSuchMethodError,但此問題也存在於WAR打包中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM