Spring Boot包Web应用程序到.jar

时间:2016-09-01 21:59:24

标签: java spring spring-boot

为什么Spring Boot默认将Web应用程序打包为 .jar ? .war是否有任何优势?

不能将所有打包为.war的Web应用程序部署到真实的Web服务器上吗?

我认为.jar文件用于桌面应用程序,而.war文件用于Web应用程序。因为.jar不包含这里提到的Web应用程序组件:

Java war vs. jar - what is the difference?

3 个答案:

答案 0 :(得分:8)

您链接到有关WAR与JAR的问题,而Spring引导的JAR确实是一个JAR,它包含的内容多于您通常放在JAR中的内容。 Spring引导伴随embedded servlet containerthe JAR内部。

所以差异:

  • JAR:通常包含资源/库/桌面应用程序/...
  • WAR:可以在 Web容器
  • 上运行的Web应用程序
  • Spring boot fat JAR:在自己的Web容器上运行的Web应用程序

关于您的问题:

  

不能将所有打包为.war的Web应用程序部署到真实的Web服务器上吗?

如果要在现有servlet容器上运行Web应用程序,则必须use a WAR file。但Spring引导JAR带有自己的servlet容器,所以你也可以完美地运行它。

您选择的两个中的哪一个是您自己的选择。即使Josh Long's mantra是"制作JAR,而不是WAR"。

答案 1 :(得分:2)

By default Spring boot将为您提供嵌入式Tomcat(在jar中)。部署这样的jar将减少对环境的依赖,并且需要更少的配置(“开箱即用的解决方案”)。

See very similar question and its answers.

答案 2 :(得分:0)

我认为springboot的重点是配置最少的开发速度。因此,您可能认为它们提供了开箱即用的解决方案,即服务器(tomcat或jetty)嵌入在jar中。

云上的微服务也只是在jar中推广嵌入式服务器,这样服务器就可以只针对应用程序进行优化,而且不需要为小应用程序设置tomcat服务器。

如果你想要你可以创造春季启动应用的战争
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html