首页 > 解决方案 > 使用在 tomcat 上运行的多个 Web 应用程序将 Spring Boot 中的应用程序配置文件外部化

问题描述

我是spring boot和tomcat的新手。我有多个 web application3 在 tomcat 中运行。

我在 tomcat 上运行了 3 个 Web 应用程序(spring boot),即 app1、app2 和 app3。在我的应用配置文件中,我有 3 个 yaml 文件(每个应用一个)。

application-app1.yml
application-app2.yml
application-app3.yml

另外,我的环境设置如下:

JAVA_OPTS='-Dspring.profile.active=uat,qa,default'

在 /tomcat/webapp 我有以下文件夹:

app1
app2
app3

当我将另一个文件名添加为 application-uat.yml 时,应用程序配置文件会选择外部 yml 文件但是,如果发生这种情况,那么所有应用程序都会选择相同的 yml 文件。

我的问题:

如何确保为该特定应用程序拾取特定的 yml 文件?

TIA

标签: spring-bootunixtomcat9

解决方案


spring.config.additional-location您可以通过在每个应用程序文件中配置参数来指定外部配置文件名称WEB-INF/web.xml。例如。对于 app1,你可以有这个配置......

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <context-param>
    <param-name>spring.config.additional-location</param-name>
    <param-value>file:./config/app1.yml</param-value>
  </context-param>
</web-app>

推荐阅读