为什么 Spring Boot 默认将 Web 应用程序打包为 .jar ?比 .war 有什么优势吗?
不应该将所有 Web 应用程序打包为 .war 以便部署到真正的 Web 服务器吗?
我认为 .jar 文件适用于桌面应用程序,而 .war 文件适用于 Web 应用程序。因为 .jar 不包含此处提到的 Web 应用程序组件:
最佳答案
您链接到一个关于 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/