行业资讯 2025年08月6日
0 收藏 0 点赞 809 浏览 1550 个字
摘要 :

文章目录 Spring Boot项目部署方式的区别 1、war包方式部署 2、可执行jar文件方式部署 生产环境如何选择布署方式? 总结 很多朋友不知道Springboot项目在生产环境部……




  • Spring Boot项目部署方式的区别
    • 1、war包方式部署
    • 2、可执行jar文件方式部署
  • 生产环境如何选择布署方式?
  • 总结

很多朋友不知道Springboot项目在生产环境部署打成jar包好还是war包好,Spring Boot是用来简化Spring应用的配置和开发过程的,此框架采用了“约定优于配置”的理念,免去了繁琐的XML配置,使我们开发项目更简单。而且Spring Boot提供了两种项目打包方式:生成war文件、生成可执行的jar文件,很多Java开发者不清楚这两种项目打包方式的区别,生产环境该选哪种方式呢?

Spring Boot项目部署方式的区别

1、war包方式部署

war包其实是打包后的Java Web工程,本质上是个压缩包,里面包含了很多目录及文件,我们把war包放入Tomcat这类容器中启动后,war包就会自动解压出一个同名的文件夹来。

注意:Spring Boot项目如果要打包成war包来部署,是需要修改项目入口文件代码的。另外由于Spring Boot内置了Tomcat容器,所以打包成war包时要将内置的Tomcat依懒排除掉。

要把代码打成 war 包要分成以下几个步骤:

1. 修改 pom.xml 文件中的配置,将打包方式 <packaging> 设置成 war;

2. 排除内置的 Tomcat 容器,也就是不要把 Tomcat 包进来了;

3. 修改入口方法,让启动类继承 SpringBootServletInitializer,并且覆盖 configure 方法;或者单独创建个类继承这个类也行。

Springboot生产环境部署打成jar包好还是war包好?

如果采用了 war 包部署,项目中配置文件中的一些配置将失效,比如 port、servlet.context-path 等;打完的包我们可以部署在 Tomcat 或其他的 web 容器中。

2、可执行jar文件方式部署

Spring Boot框架默认的打包部署方式是生成一个可执行的jar文件,无论项目多么复杂,依懒包有多少,www.panziye.com最终只有一个jar文件(有些可能有外置的配置文件),在任何一台装有JRE/JDK环境的服务器上可以直接以 java -jar xx.jar 这种方式来运行(其实是靠内置的Tomcat来运行的),十分方便。

Spring Boot 默认的打包方式就是 jar,因为“约定优于配置”的原则,所以我们什么也不配置,打出来的包就是 jar 格式的,当然我们也可以在 pom.xml 中加上一行配置(我一般用 maven)。

 <packaging>jar</packaging>

在 <build> 内配置打包的名称,就完成了打包的配置:

Springboot生产环境部署打成jar包好还是war包好?

最后执行打包命令即可:mvn clean package

打包完成后,在项目的 target 目录下会生成一个 jar 包,也就是我们打包好的项目代码了;Spring Boot 打成的 jar 包和普通的 jar 包还是有一定区别的,关键就在于Spring Boot 打成的 jar 包包含了自己所依赖的其他 jar 包,并且内置了容器,默认把 Tomcat 也打进了 jar 包(也可以换成 jetty、undertow),我们可以直接运行这个 jar 包。

生产环境如何选择布署方式?

无论是war方式还是jar方式,本质上差别并不大。在生产环境下还是要选择合适的方式。

1)war包是放在Servlet容器中(如:Tomcat)运行的,所以像上下文路径、端口号等是war包无法决定的;

2)jar包由于内嵌了Tomcat容器,所以端口号、上下文路径可由jar包自己决定,虽然方便但是jar方式打包后的文件较war包的要大得多。

总结

综上,如果服务器配置高、节点多、微服务方式,建议选择jar方式部署;如果服务器配置跟不上,建议选择war方式部署(省内存空间)。最后,我们认为可执行jar文件方式部署是我们推荐的,特别是在微服务场景下部署更便捷。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/8743.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号