如何告诉 spring 引导根据服务器加载哪些 属性 文件?

How to tell spring boot which property files to load according to the server?

我有这种情况需要根据服务器名称加载属性文件。

我在这个结构中有resource

我有 2 个不同的服务器。比方说 SERV-A 和 SERV-B,这些服务器中的每一个都有各自独立的 e1、e2 服务器。例如.. SERV-A-e1, SERV-A-e2, SERV-B-e1, SERV-B-e2。代码库相同。

resource - |
           |-SERV-A - |
                      |-application.properties
                      |-application-e1.properties
                      |-application-e2.properties


           |-SERV-B - |
                      |-application.properties
                      |-application-e1.properties
                      |-application-e2.properties

所以我希望当我在服务器 SERV-A 上部署我的应用程序时,它应该从 resource/SERV-A 读取 application.properties 和 application-e1.properties 文件,当我将它部署在服务器 SERV 上时-B 那么它应该从 resource/SERV-A

读取

我认为您可以使用基于配置文件的属性来实现此目的。 Docs here. But you may need to play with the folder structure, you may need to bring SERV-B and SERV-A to the application properties name like application-serv-a.properties and application-serv-a-e1.properties. Obviously doesn't scale very much with many servers. There is a similar question

我想您可以像这样利用活动配置文件:

-Dspring.profiles.active=application-serv-a-e1.properties

谢谢@Anton Belev。

我能够解决这个问题。 我重新创建了 resource 结构。

resource - |
           |----------
                      |-application.properties
                      |-application-SerA-e1.properties
                      |-application-SerA-e2.properties
                      |-application-SerB-e1.properties
                      |-application-SerB-e2.propertie

所以现在我想在 SERVER-A 上部署。我可以简单地给出一个简单的 java 命令并让它 运行 正确的属性集。

java -jar -Dspring.profiles.active=SerA-e1 /path/to/jar/NameOFYourJar.jar &