快速初始化Spring boot的时候,打包成jar和war的区别

我们在快速初始化Spring boot的时候,可以选择他的最终打包成什么

快速初始化Spring boot的时候我们该怎么选择打包方式呢?

在Springboot 初始化的时候,打包方式只有jar包和war包可选

打JAR包

我们处于学习阶段的时候,

要打成jar包的原因是jar包的部署和运行方式是

我们通过spring boot的插件把项目文件和依赖打包成一个可以通过JVM独立运行的jar文件

这个就是jar包,他内嵌了Servlet容器(如Tomcat、Jetty等),可以直接通过启动Jar包来运行Spring Boot应用。

使用的时候直接使用java -jar命令运行Jar包即可,不需要额外的Web容器支持。

这种方式简单快捷,适合单机部署。

打WAR包

打成war包的部署和运行方式是

将项目及其依赖打包成一个War文件

将War包部署到外部的Servlet容器(如Tomcat、Jetty等)中运行

所以在打成War包的时候要排除内置Servlet容器和外部Servlet容器冲突

War包依赖外部Servlet容器的支持,通过启动容器来运行Spring Boot应用。

War包适合于与其他 JavaEE 应用共同运行的场景。

为什么War包适合于与其他 JavaEE 应用共同运行的场景,而jar包不适合呢?

war包适合的原因

主要是因为 WAR 包是专门用于打包 Web 应用程序的。在 JavaEE(Java Enterprise Edition)环境中,通常会有多个 Web 应用程序同时部署在同一个应用服务器上,它们共享服务器的资源,通过服务器来管理和处理客户端请求。

  1. 独立性

    • WAR 包是一个独立的 Web 应用程序包,其中包含了应用程序的所有必需文件,包括 Servlet、JSP 文件、HTML、CSS、JavaScript、配置文件等。
    • 不同的 WAR 包之间可以相互独立,彼此不会产生影响。
  2. 部署管理

    • JavaEE 应用服务器能够管理和控制多个 WAR 包的部署和运行。
    • 通过 JavaEE 应用服务器的管理界面或命令行工具,可以方便地对 WAR 包进行部署、启动、停止和卸载等操作。
  3. 资源共享

    • WAR 包可以通过 JavaEE 应用服务器共享服务器资源,如数据库连接池、JNDI(Java Naming and Directory Interface)资源、共享库文件等。
    • 这样可以避免每个 Web 应用程序都去独立配置和管理这些资源,提高了资源的利用率和管理效率。
  4. 隔离性

    • 虽然 WAR 包可以与其他 JavaEE 应用共同运行,但它们之间是相互隔离的,不会相互干扰。
    • 每个 WAR 包都有自己的上下文路径和类加载器,可以确保各应用程序之间的资源和类文件不会冲突。

所以War合适这个场景的原因是war包在应用服务器上能独立管理、共享资源,并保持相互隔离,从而有效地提高了 Web 应用程序的部署和管理效率。

jar包不适合的原因

  1. 缺乏标准化的部署结构

    • JAR 包通常用于打包独立的 Java 应用程序,而不是 Web 应用程序。
    • 缺乏标准化的部署结构意味着在多个 JavaEE 应用共同运行的环境中,可能会缺少一些必需的配置文件或目录结构,从而导致应用程序无法正常工作。
  2. 缺乏与 JavaEE 规范相关的功能

    • JavaEE 应用服务器提供了许多与 JavaEE 规范相关的功能,如 Servlet 容器、JSP 引擎、EJB(Enterprise JavaBeans)容器等。
    • JAR 包通常不包含这些功能,因此无法直接在 JavaEE 应用服务器中运行。
  3. 缺乏管理和监控功能

    • JavaEE 应用服务器提供了管理和监控功能,可以方便地管理多个部署的应用程序,如部署、启动、停止、监控等。
    • JAR 包通常缺乏这些功能,需要额外的工具或手动操作来管理和监控应用程序。
  4. 缺乏与 JavaEE 规范相关的集成和扩展点

    • JavaEE 应用服务器提供了许多与 JavaEE 规范相关的集成和扩展点,如 JNDI、JTA(Java Transaction API)、JMS(Java Message Service)等。
    • JAR 包通常不包含这些集成和扩展点,因此无法直接利用 JavaEE 应用服务器提供的功能。

虽然 JAR 包是一个独立的 Java 应用程序包,但由于缺乏与 JavaEE 规范相关的功能、标准化的部署结构、管理和监控功能以及集成和扩展点,所以不太适合共同运行的场景

而War就是为打包web应用设计出来的,这种方式可以结合容器的优势,实现多实例部署和负载均衡

  • 22
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值