【发布时间】:2019-04-18 11:56:05
【问题描述】:
我有 spring boot 应用程序 - server.jar 具有下一个结构:
-resources
-application.yaml
构建后,我创建了一个名为 source 的文件夹。并将我的罐子放到这个文件夹中。另外,我创建了 start .bat 文件
-source
-server.jar
-start.bat
在start.but我接下来写的文件中:
java -Dspring.profiles.active="foofoofoo" -jar server.jar
pause
当我运行start.bat 时,我的服务器以日志开头:
The following profiles are active: foofoofoo
并使用来自application.yaml 的属性。我没有名为foofoofoo 的个人资料,也没有apllication-foofoofoo.yaml。为什么?为什么spring写它加载foofoofoo配置文件,加载application.yaml并工作?
它一定会崩溃,因为我使用不存在的配置文件启动应用程序!
相反,我看到一个正在运行的应用程序具有另一个属性!我该如何处理?
【问题讨论】:
-
您的 application.yml 是否具有 application-your-profile.yml 的所有属性?
-
@htshame 我没有
application-your-profile.yml。我的罐子里只有application.yml -
配置文件特定的属性文件是可选的。所以没有它不会导致应用程序崩溃。该配置文件可用于更多的事情,然后加载属性文件。因此,没有“丢失”文件不会导致应用程序崩溃,因为它只是可选的。
-
@M. Deinum 那么我该如何管理个人资料。我有一个包含 3 个配置文件的应用程序 -
dev,test,prod。我有 4 个yaml文件 -application.yaml、application-dev.yaml、application-test.yaml和application-prod.yaml。我将基本配置存储在application.yaml中,并在其他 yaml 文件中覆盖它。当我在测试环境中启动应用程序时,我传递参数 --Dspring.profiles.active=test。但如果application-test.yaml不存在 - 应用程序以application.yaml开头。不好 -
如果应用程序没有特定配置,我想阻止它运行
标签: spring-boot yaml spring-profiles