spring boot:将新的yml文件添加到应用程序配置中

时间:2016-03-29 20:52:20

标签: java spring spring-boot

我希望开发人员能够在本地覆盖某些配置属性。 (假设我们在google驱动器上工作,每个人都应该在自己的帐户上测试它)。 我不想使用命令行覆盖属性(因为它必须在每个IDE配置和每个CLI运行中设置)。

我想要的是:应用程序应该使用所有标准的spring引导配置文件(application.yml等)并查找例如local.yml(在类路径上)或user.home内的某个文件。那些附加文件应该覆盖其他设置。

如何添加新的yml资源并正确排序?

编辑:我知道春天的默认订单和位置。问题是添加

5 个答案:

答案 0 :(得分:3)

如果您查看有关配置文件(http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config)的位置的Spring Boot文档,您可以看到它们是从以下位置(以及其他位置)加载的:

  • 打包jar之外的特定于配置文件的应用程序属性(application- {profile} .properties和YAML变体)
  • 打包jar之外的应用程序属性(application.properties和YAML变体)。

有两个默认位置从中加载(参见http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files):

  • 当前目录的A / config子目录。
  • 当前目录

在这种情况下,当前目录表示Java进程的工作目录(通常是JAR所在的目录,或者在IDE中运行时,通常是项目根文件夹)。因此开发人员可以将自己的配置文件放在那些位置并自动加载(并覆盖JAR中的属性)。将这些文件添加到.gitignore(或.svnignore或...),他们不会意外地提交到您的存储库。

答案 1 :(得分:1)

在 Spring Boot v2.4 之后,有一种新方法可以使用 spring.config.importhttps://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环境中:

  • 当前目录的A / config子目录。
  • 当前目录
  • classpath / config包
  • classpath root

列表按优先顺序排列(在列表中较高位置定义的属性会覆盖在较低位置定义的属性)。

这也适用于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文件来管理数据库和服务器端口。

我遵循的说明:

  1. 项目文件。
  2. 其他来源
  3. src / main / resources
  4. 默认程序包
  5. 右键单击“默认程序包”
  6. 添加新的YAML文件

或“ YAML文件”选项不可用    5.右键单击“默认程序包”    6.然后在类别中:其他->文件类型:YAML文件