SpringBoot打包部署最佳实践

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开发最好的方案。

java思维导图获取途径

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。

如何将多个s

你可能感兴趣的:(程序员,编程,Java,spring,boot,java,spring)