我是Spring Boot的新手,我看到了关于spring-boot的可执行jar。 它说:
可执行jar和Java
Java没有提供任何加载嵌套jar文件的标准方法(即 jar文件本身包含在jar中)。这可以 如果你想分发一个自给自足的问题 应用
为了解决这个问题,许多开发人员使用“超级”罐子。一个超级罐子 只需将所有类中的所有类打包到一个存档中。该 这种方法的问题是很难看出哪个 您实际在应用程序中使用的库。它也可以 如果使用相同的文件名(但内容不同)有问题 在多个罐子里。
Spring Boot采用不同的方法,允许您实际嵌套 直接罐子。
我想知道超级罐子或肥胖罐子是否有一些缺点,即我们必须重新部署整个超级罐子,可能会遇到关于NoSuchMethodError的麻烦。如何从超级罐子中获取Spring启动可执行罐子。由于它有许多缺点,为什么弹簧靴仍然使用这种类型的罐子?
答案 0 :(得分:3)
使用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包装中。