SpringBoot 打包部署最佳实践

本文介绍了SpringBoot作为Java Web开发框架的优势,包括简化配置、内置Web容器和丰富的生态。讨论了SpringBoot应用程序的两种运行方式——jar包和war包,分析了各自的优缺点。针对部署过程中遇到的问题,如配置管理、环境切换、多模块打包等,提出了自动化解决方案,包括脚本自动化打包、多模块项目结构优化和容器化部署策略。同时,强调了jenkins在持续集成中的作用,用于实现从代码到线上运行的自动化流程。
摘要由CSDN通过智能技术生成

spring boot介绍

Spring Boot目前流行的java web应用开发框架,相比传统的spring开发,spring boot极大简化了配置,并且遵守约定优于配置的原则即使0配置也能正常运行,这在spring中是难以想象的。spring boot应用程序可以独立运行,框架内嵌web容器,使得web应用程序可以像本地程序一样启动和调试,十分的方便,这种设计方式也使得spring boot应用程序非常适合容器化进行大规模部署。生态方面,spring boot提供了非常丰富的组件,目前流行的java web框架基本都有spring boot版本,生态十分庞大,是目前java web开发最好的方案。

spring boot部署问题

Springboot应用程序有两种运行方式

以jar包方式运行

以war包方式运行

两种方式应用场景不一样,各有优缺点

jar包运行

通过maven插件spring-boot-maven-plugin,在进行打包时,会动态生成jar的启动类org.springframework.boot.loader.JarLauncher,借助该类对springboot应用程序进行启动。

优点

本地无需搭建web容器,方便开发和调试。

因为自带web容器,可以避免由于web容器的差异造成不同环境结果不一致问题。

一个jar包就是全部,方便应用扩展。

借助容器化,可以进行大规模的部署。

缺点

应用过于独立,难以统一管理。

数据源无法通过界面进行管理。

应用体积过大。

修改web容器相关配置较为困难,需要借助代码实现。

war包运行

以war包方式运行,通过maven插件spring-boot-maven-plugin进行相关配置后,最终生成一个可运行在tomcat,weblogic等java web容器中的war包。

优点

可以借助web容器管理界面对应用进行管理。

可以管理JNDI数据源。

web容器配置较为灵活,配置和程序分离。

应用体积较小,甚至可以借助web容器的包管理功能(比如weblogic Library)进一步减小应用大小。

缺点

本地需要搭建web容器,对本地环境要求更高点,学习成本也响应更高。

调试较为困难,需要借助web容器。

无法兼容所有web容器(比如spring boot2.x无法运行在weblogic 11g上)。

部署较为困难(比如和weblogic有较多的类冲突)

在实际的项目中,并没有哪一种方式是最好的,根据客户不同的需求制定不同的部署方案,比如有些客户比较看中管理功能,要求数据源和tomcat相关配置必须由管理员进行管理,那么选择war包方式,有些客户希望借助容器化进行大规模部署,那么jar方式更适合。不管选择哪种方式,在部署时都会遇到下面的问题

如果需要打war包,那么不仅是pom文件需要修改,应用程序也要做相应的改动,改动完后,应用程序就无法本地运行,需要打完包后将配置信息修改回来,这样不仅麻烦,还容易出错。

不管是war包还是jar包,如何管理不同环境的配置文件,保证不会出错,虽然spring boot有提供spring.profiles.active配置设置不同的环境,但一方面需要人为修改配置文件,只要是人为的就有可能出错,另一方面,客户有时出于安全考虑不会提供生产环境配置信息,那么这时候就无法指定prifiles.active。

如何将多个spring boot模块打包在一起。

jar包需要配合容器化才能发挥出最大的优势,如果没有容器,spring boot jar包就是一个玩具,随处运行的jar包,缺少统一管理,是达不到生产的要求,那么如果从jar包到容器也是一个问题。

早期碰到这些问题,都是人工解决,不仅效率十分低下,部署一次都需要十几分钟,而且很容易出错,一百次出错一次算是概率低了,但是生产出错一次都是重大事件,所以我们也在思考如何通过自动化解决以上问题,如何将开发和部署分离,开发人员只关心开发,开发完提交代码,打包和部署都是后台透明的完成。以下就是我们的解决方案。

打包war包打包问题解决

spring boot打war包的步骤如下

在pom.xml中将打包方式改为war。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值