java - Spring Boot 将 web 应用程序打包为 .jar

标签 java spring spring-boot

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

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

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

Java war vs. jar - what is the difference?

最佳答案

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

所以区别:

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

关于您的问题:

Shouldn't be all web applications packed as .war in order to be deployed to real web server?

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

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

关于java - Spring Boot 将 web 应用程序打包为 .jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39281516/

相关文章:

java - EL1012E : Cannot index into a null value

java - Spring AOP : Trying to use for logging but getting IllegalArgumentException

java - Spring Boot 5 WebClient 在检查 HTTP 响应 header 之前先验证 HTTPStatus

java - 如何从 Java SpringBoot 应用程序读取 Azure 应用程序配置值

java - JSP和SPRING启动: Generate CSV file from JSON input?

java - 我缺少类似 : 'isConnected' on ClientDolphin class (open-dolphin) 的内容

java - 在Java中为当前日期添加天数

java - TestNG 如何测试 @PreAuthorize 注释及其由 spring MVC Controller 指定的 spring EL?

java - 在不同的事件循环上为不同的 webflux 端点提供服务

java - 如何在类中的所有方法或包中的所有类中或通过 JDB 中的正则表达式设置断点?