使用单独Tomcat部署Spring boot应用时的多配置文件切换

之前公司的springboot项目直接用内置的tomcat容器来启动,因此要实现spring配置文件切换直接在启动服务的时候加 -Dspring.profiles.active

参数就可以切换yml里的配置了,比如:

application.yml文件:

spring:
  profiles.active: oracle-test

---

spring:
  profiles: mysql-test
 
---

spring:
  profiles: oracle-test

---
spring:
  profiles: oracle-pro
java -Duser.timezone=Shanghai -Dspring.profiles.active=oracle-test -jar XX.jar

可是现在新起的一个项目要把前端代码和后端代码部署到一个tomcat里,上面方法不能用了,研究了一下可以通过修改tomcat/bin文件夹里的catalina.sh文件(windows系统为catalina.bat)来实现。详细如下:

因为不同tomcat版本对应代码的行数不同,直接打开catalina.sh文件搜索JAVA_OPTS,找到类似如下部分:

# Register custom URL handlers
# Do this here so custom URL handles (specifically 'war:...') can be used in the security policy
JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"

在后面添加 -Dspring.profiles.active=$2 ,把第二个参数作为spring配置文件名:

# Register custom URL handlers
# Do this here so custom URL handles (specifically 'war:...') can be used in the security policy
JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dspring.profiles.active=$2"

windows下的catalina.bat这样改:

set "JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dspring.profiles.active=%2%"

保存然后后面启动tomcat的时候指定参数就可以了,不指定第二个参数就会使用yml里的默认配置文件:

./catalina.sh run oracle-pro
原文地址:https://www.cnblogs.com/pauljoyce/p/13321913.html