Spring Boot应用程序文件分层

时间:2019-06-04 15:19:09

标签: spring-boot

我有3个文件,如下所示:

1. application.yml with some other configurations

2. application-default.yml with contents
   apisigning:
     client:
      sharedKey: 'some xyz'
      secretKey: 'some xyz'
      proxyHost: 127.0.0.1
      port: 9480

3. application-cloud.yml with contents
   apisigning:
     client:
      sharedKey: 'some xyz'
      secretKey: 'some xyz'

因此,当我使用默认配置文件运行应用程序时,我想使用application-default.yml文件中的代理主机和端口值。但是,一旦将其部署到云中,就不应理想地配置代理主机和端口值。我面临的问题是,在云环境中,它以某种方式获取该proxyHost和端口的值。我想知道这里出了什么问题?在这种情况下,如何基于配置文件完成yml文件的分层。

1 个答案:

答案 0 :(得分:-1)

来自Spring Boot参考

24.4特定于配置文件的属性 除了application.properties文件之外,还可以使用以下命名约定来定义特定于配置文件的属性:application- {profile} .properties。如果没有设置活动配置文件,则环境具有一组默认配置文件(默认为[默认])。换句话说,如果未显式激活任何配置文件,则将加载application-default.properties中的属性。

特定于配置文件的属性是从与标准application.properties相同的位置加载的,特定于文件的文件总是会覆盖非特定文件,无论特定于文件的文件是在打包jar的内部还是外部。

如果指定了多个配置文件,则采用后赢策略。例如,将spring.profiles.active属性指定的配置文件添加到通过SpringApplication API配置的配置文件之后,因此具有优先权。

[注意] 如果您在spring.config.location中指定了任何文件,则不会考虑这些文件的特定于配置文件的变体。如果您还想使用特定于配置文件的属性,请使用spring.config.location中的目录。

在这里找到https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-profile-specific-properties