war包部署后运行时如何让application.properties修改生效
已部署war包修改application.properties后的生效操作流程
根据应用是否开启配置热更新能力,对应操作分为两类:
场景1:默认无热更新能力的常规部署场景
绝大多数普通Java Web、默认配置的Spring Boot war包部署都属于该场景,配置仅在应用启动时加载到内存,修改磁盘文件不会自动同步,操作流程如下:
- 定位配置文件实际存放路径
- 若容器已自动解压war包(如Tomcat webapps目录下的项目解压目录):直接修改目录内
WEB-INF/classes/application.properties文件即可,无需重新打包 - 若直接运行未解压的war包:先解压war包,修改
WEB-INF/classes/application.properties后重新打包为war文件,替换部署目录下的原war包
- 若容器已自动解压war包(如Tomcat webapps目录下的项目解压目录):直接修改目录内
- 修改前先备份原有配置文件或war包,避免修改出错无法回滚
- 重启应用服务使配置生效
- 外置容器(Tomcat、Jetty等)部署:重启对应容器服务即可,例如Tomcat执行
sh shutdown.sh && sh startup.sh - 可执行war包部署:终止当前运行的war进程,重新执行启动命令即可
- 外置容器(Tomcat、Jetty等)部署:重启对应容器服务即可,例如Tomcat执行
- 服务重启完成后,通过日志、业务接口校验配置是否正常生效
场景2:已开启配置热更新能力的部署场景
如果应用集成了Spring Boot Actuator并开启refresh端点、或接入了Nacos/Apollo等配置中心支持热刷新,无需重启即可生效,操作流程如下:
- 修改对应application.properties文件的目标配置项
- 调用应用暴露的配置刷新接口,例如Spring Boot Actuator场景可执行命令:
curl -X POST http://应用访问地址/actuator/refresh - 校验对应配置项是否已更新生效
注意:数据库连接、服务端口、线程池核心参数等启动时初始化的配置,即使开启热刷新也需要重启应用才能生效,仅运行时动态读取的业务自定义配置可通过热刷新生效。
内容的提问来源于stack exchange,提问作者pheromix
相关产品推荐
相关产品推荐

