学到一个java项目部署到不同环境的新姿势

本文介绍了如何解决SpringBoot项目在不同环境下的配置管理问题,从传统的application.properties多环境配置,到使用spring.profile.active动态匹配配置文件,再到引入配置中心以增强安全性。当遇到没有application.properties的WAR包项目时,通过在Tomcat的setenv脚本中设置启动参数-Dspring.profiles.active来指定环境配置,实现了项目的成功启动。此外,还提到了Linux环境下的类似配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学到一个java项目部署到不同环境的新姿势

聊聊基本

古代程序员在调试springboot的时候,只有application.properties 或者 application.yml可以放配置,并且配置文件中分别放几段配置,大致是:本地开发一套,测试环境一套,预发…线上…,这很不方便,需要随着环境变更不断增删配置。
所以,随着技术更新迭代,现在已经可以通过spring.profile.active=param,通过指定param来匹配application-%param%.properties,比如:你在application.properties里面设置了spring.profile.active=dev,同时你就可以添加一个application-dev.properties配置文件,springboot项目就会在读取application.properties的同时,发现了你指定另一个要读取的配置,所以springboot不厌其烦的将另一个配置也读了。
所以对于不同的环境,你只需要添加 application-dev.properties、application-pro.properties、application-test.properties…然后在application.properties中设置spring.profile.active=dev 或spring.profile.active=pro 或 spring.profile.active=test… 就可以了。
后来大家突然发觉,这样其实仍然有些不安全因素存在,所以用上了配置中心,还是上面的配置方式,但是配置内容却不放在配置文件里面了,换成了用于与配置中心确认身份从而交换数据的一些内容,如下图所示
就这种东西

问题

接着上面的说,今天我在公司看到了一个war包部署的项目,并且配置文件长这样
配置文件中的内容
看到这,我并没有大受震撼,只觉得无语,再看他的内容
就这种东西
众所周知,即便是再简化这个配置,他也要指定到底要读取哪一套配置才可以,可是他并没有application.properties文件,我们要怎么启动呢?

解决

正如我所说的,不论怎样,这个东西都得有!所以你既然打包的时候不指定,那就一定是启动的时候指定,毕竟这个配置文件就是用来在启动的时候加载配置内容的。
所以我在我的windows环境下进行了如下操作:
1、因为项目是war,所以一定是外部tomcat启动了,所以我找到了我落满尘埃的tomcat的文件夹,在它的bin目录里含泪创建一个名为setenv.bat的文件
2、然后索性向刚创建的文件中添加: set "JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=dev"
3、最后无奈保存文件启动项目,事实证明…我成功了
4、防患于未然,这个是linux下的配置方式,tomcat的bin目录下创建名为setenv.sh的文件并添加内容:JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=dev"

感言

看文章的人真帅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值