【问题标题】:How to make spring.profile.include to include YAML files from subfolder?如何使 spring.profile.include 包含子文件夹中的 YAML 文件?
【发布时间】:2020-09-02 02:43:30
【问题描述】:

我目前有 4 个 YAML 文件

application.yaml
application-local.yaml
application-test.yaml
application-dev.yaml

我假设application.yaml 充当default。

在其他3个文件中包含

spring:
  profiles:
    include: default

我的问题是我的application.yaml 很大 它包含分层的属性。

例如,

connection:
  baseUrl: 'http://localhost:5000'
  brokerUrl: 'http://localhost:8082'
  ...

workspaces:
  a:
    width: 45
    height: 100
    ...
  b:
    width: 56
    height: 125
    ...

我想将当前application.yaml 中的内容保存在子文件夹中的多个文件中。

假设connection.yaml 将包含

connection:
  baseUrl: 'http://localhost:5000'
  brokerUrl: 'http://localhost:8082'
  ...

workspace-a.yaml 将包含

workspaces:
  a:
    width: 45
    height: 100
    ...

最后,workspace-b.yaml 将包含

workspaces:
  a:
    width: 56
    height: 125
    ...

最后的结构会是这样的

/resources
  application.yaml
  application-local.yaml
  application-test.yaml
  application-dev.yaml
  connection.yaml
  /workspaces
    a.yaml
    b.yaml

我尝试将以下代码放入application.yaml,但没有成功。

spring:
  profiles:
    active: 'local'
    include:
      - connection.yaml
      - workspaces/a.yaml
      - workspaces/b.yaml

我也尝试过不同的格式,比如

- classpath:/workspaces/a.yaml
- ./workspaces/a.yaml
- file:./workspaces/a.yaml

请帮忙:'(

【问题讨论】:

  • 您可以为此使用@PropertySource 注解。 Check this thread please
  • 非常感谢,但文件非常大,会被分割成许多小文件,我不确定@PropertySource 在这种情况下是否有帮助。我有点想要一个干净漂亮的代码。您还有其他选择吗?

标签: java spring spring-boot yaml


【解决方案1】:

您可以尝试将您的子配置命名为 application-a.yaml,application-b.yaml,然后在 application.yaml 中使用它

spring:
   profiles:
      include:
         a,
         b,
         ...

想法来自:https://stackoverflow.com/a/40500683/10938777

【讨论】:

  • 问题是我必须将application-a.yaml 和application-b.yaml 保存在与application.yaml 相同的文件夹下。我想将它们保存在一个子文件夹中,但非常感谢:D
【解决方案2】:

很遗憾,我没有更好的解决方案给你。你可以使用多个源文件这个注解:PropertySources annotation

这个注解可以将多个PropertySource绑定到一个配置中。

例如:

@PropertySources({ @PropertySource("/file1.properties"), @PropertySource("/file2.properties") })

【讨论】:

猜你喜欢
  • 2011-01-17
  • 1970-01-01
  • 2018-01-02
  • 2015-09-14
  • 1970-01-01
  • 2012-07-24
  • 2012-02-22
  • 1970-01-01
  • 2011-12-25
相关资源
最近更新 更多