【发布时间】:2016-09-01 21:59:24
【问题描述】:
为什么 Spring Boot 默认将 Web 应用程序打包为 .jar ?比 .war 有什么优势吗?
不应该将所有 Web 应用程序打包为 .war 以便部署到真正的 Web 服务器吗?
我认为 .jar 文件适用于桌面应用程序,而 .war 文件适用于 Web 应用程序。因为 .jar 不包含此处提到的 Web 应用程序组件:
【问题讨论】:
标签: java spring spring-boot
为什么 Spring Boot 默认将 Web 应用程序打包为 .jar ?比 .war 有什么优势吗?
不应该将所有 Web 应用程序打包为 .war 以便部署到真正的 Web 服务器吗?
我认为 .jar 文件适用于桌面应用程序,而 .war 文件适用于 Web 应用程序。因为 .jar 不包含此处提到的 Web 应用程序组件:
【问题讨论】:
标签: java spring spring-boot
您链接到一个关于 WAR 与 JAR 的问题,而 Spring boot 的 JAR 确实是一个 JAR,它包含的内容比您通常放入 JAR 中的要多。 Spring Boot 本身带有一个 embedded servlet container,在 the JAR 内部。
所以区别:
关于您的问题:
难道不应该将所有 Web 应用程序打包为 .war 以便部署到真正的 Web 服务器上吗?
如果您想在现有的 servlet 容器上运行 Web 应用程序,您必须use a WAR file。但是 Spring boot JAR 自带了自己的 servlet 容器,所以你也可以完美地运行它。
你选择的两个是你自己的选择。即使Josh Long's mantra 是“制作 JAR,而不是 WAR”。
【讨论】:
By default Spring boot 将为您提供嵌入式 Tomcat(在 jar 中)。部署这样的 jar 将使您对环境的依赖更少,并且需要更少的配置(“开箱即用的解决方案”)。
【讨论】:
我认为 springboot 的重点在于以最少的配置实现开发速度。所以你可能会认为他们提供了开箱即用的解决方案,服务器(tomcat 或 jetty)嵌入在 jar 中。
云上的微服务也只在jar中推广嵌入式服务器,这样服务器就可以只针对应用程序进行优化,不需要为小型应用程序设置tomcat服务器。
如果您愿意,可以创建 spring boot 应用程序之战
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html
【讨论】: