我希望开发人员能够在本地覆盖某些配置属性。 (假设我们在google驱动器上工作,每个人都应该在自己的帐户上测试它)。 我不想使用命令行覆盖属性(因为它必须在每个IDE配置和每个CLI运行中设置)。
我想要的是:应用程序应该使用所有标准的spring引导配置文件(application.yml
等)并查找例如local.yml
(在类路径上)或user.home
内的某个文件。那些附加文件应该覆盖其他设置。
如何添加新的yml
资源并正确排序?
编辑:我知道春天的默认订单和位置。问题是添加新的
答案 0 :(得分:3)
如果您查看有关配置文件(http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config)的位置的Spring Boot文档,您可以看到它们是从以下位置(以及其他位置)加载的:
有两个默认位置从中加载(参见http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files):
在这种情况下,当前目录表示Java进程的工作目录(通常是JAR所在的目录,或者在IDE中运行时,通常是项目根文件夹)。因此开发人员可以将自己的配置文件放在那些位置并自动加载(并覆盖JAR中的属性)。将这些文件添加到.gitignore(或.svnignore或...),他们不会意外地提交到您的存储库。
答案 1 :(得分:1)
在 Spring Boot v2.4 之后,有一种新方法可以使用 spring.config.import
:https://spring.io/blog/2020/08/14/config-file-processing-in-spring-boot-2-4#importing-additional-configuration
通过将此部分添加到您的 application.yml
文件中,您应该能够导入其他配置:
spring:
config:
import: local.yml
文章也有这个部分:
<块引用>导入可以被视为插入在声明它们的文档下方的附加文档。它们遵循与常规多文档文件相同的自上而下的顺序:一个导入只会被导入一次,无论它声明了多少次。
因此 local.yml
的内容应该像附加到 application.yml
的末尾一样处理,从而允许您在 application.yml
中使用 override any property。
答案 2 :(得分:0)
来自Spring Boot Documentation : Application property files:
SpringApplication将从以下位置的application.properties文件加载属性,并将它们添加到Spring环境中:
列表按优先顺序排列(在列表中较高位置定义的属性会覆盖在较低位置定义的属性)。
这也适用于yaml,所以你们每个人都可以在config
目录下的运行spring boot jar的目录下添加application.yml。
如果您希望使用local.yml
,还可以将额外配置文件自定义为spring.config.location
:
--spring.config.location=classpath:/application.yml,classpath:/local.yml
但请注意:
spring.config.name和spring.config.location很早就用来确定必须加载哪些文件,因此必须将它们定义为环境属性(通常是OS env,系统属性或命令行参数)。 / p>
答案 3 :(得分:0)
在spring-boot应用程序中提供外部配置文件的配置 -
-Dspring.config.location=file:/home/vfroot/Workspace/project/MODULE_HOME/application.yaml
此命令可以通过终端运行:
mvn clean install -Dspring.config.location = file:/home/vfroot/Workspace/MODULE_HOME/application.yaml
或需要在Eclipse VM argument
中设置。
还要设置活动配置文件:
-Dspring.profiles.active=dev
答案 4 :(得分:0)
好吧,因为我是Spring Boot和Restfull Web服务的新手。但是,我设法添加了一个新的.yml文件来管理数据库和服务器端口。
我遵循的说明:
或“ YAML文件”选项不可用 5.右键单击“默认程序包” 6.然后在类别中:其他->文件类型:YAML文件