spring-boot - 使用在 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.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>
推荐阅读
- snowflake-cloud-data-platform - dbt 到雪花连接 ERROR Profile Not Found
- angular - Angular 6 - 在提交时恢复表单字段更改的值
- visual-studio-code - 如何配置 emmet bem 过滤器以使其在 tsx 中工作?
- powershell - 如果上一行不匹配,则删除一行?
- javascript - 为什么我不能在 React 中传递简单的道具..从父母到孩子
- flutter - 为什么父类接受孩子的颜色?
- android-studio - 更新后未显示 Android Studio 的触控栏图标
- google-cloud-firestore - 更新到 cloud_firestore 2.2.0 并且无法找出错误
- heroku - 有没有办法在heroku上查看应用程序流量统计?
- memory - CL 时序信息 DDR3 SDRAM