【问题标题】:Spring Boot package web application to .jarSpring Boot 将 web 应用程序打包为 .jar
【发布时间】:2016-09-01 21:59:24
【问题描述】:

为什么 Spring Boot 默认将 Web 应用程序打包为 .jar ?比 .war 有什么优势吗?

不应该将所有 Web 应用程序打包为 .war 以便部署到真正的 Web 服务器吗?

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

Java war vs. jar - what is the difference?

【问题讨论】:

    标签: java spring spring-boot


    【解决方案1】:

    您链接到一个关于 WAR 与 JAR 的问题,而 Spring boot 的 JAR 确实是一个 JAR,它包含的内容比您通常放入 JAR 中的要多。 Spring Boot 本身带有一个 embedded servlet container,在 the JAR 内部。

    所以区别:

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

    关于您的问题:

    难道不应该将所有 Web 应用程序打包为 .war 以便部署到真正的 Web 服务器上吗?

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

    你选择的两个是你自己的选择。即使Josh Long's mantra 是“制作 JAR,而不是 WAR”。

    【讨论】:

    • 同意:制作 JAR,而不是 WAR
    【解决方案2】:

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

    See very similar question and its answers.

    【讨论】:

      【解决方案3】:

      我认为 springboot 的重点在于以最少的配置实现开发速度。所以你可能会认为他们提供了开箱即用的解决方案,服务器(tomcat 或 jetty)嵌入在 jar 中。

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

      如果您愿意,可以创建 spring boot 应用程序之战
      https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-17
        • 2017-04-20
        • 2020-01-19
        • 2019-02-20
        • 2018-02-03
        • 1970-01-01
        • 2015-06-10
        • 2017-02-10
        相关资源
        最近更新 更多