Spring boot Spring引导应用程序文件分层

Spring boot Spring引导应用程序文件分层,spring-boot,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-clou

我有以下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文件中的代理主机和端口值。但一旦部署到云中,就不应该理想地配置代理主机和端口值。我面临的问题是,在cloud env中,它以某种方式获取该代理主机和端口的值。我想知道这里出了什么问题?在本例中,yml文件的分层是如何基于概要文件完成的。

来自Spring Boot参考资料

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

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

如果指定了多个配置文件,则应用最后一个wins策略。例如,spring.profiles.active属性指定的配置文件添加在通过SpringApplication API配置的配置文件之后,因此优先

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


在此处找到

您是如何启动应用程序的/配置文件是如何设置的是,活动配置文件正在命令行参数中传递。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能无效。-我用spring boot参考中的重要部分编辑了答案,您可以为本例中的应用程序行为提供解释。我知道云配置文件会优先考虑,但为什么它也会从默认配置文件中选择值呢?您是否有这样的内容:-Dspring.profiles.active=cloud,jvm参数中的默认值?您可以在spring引导参考中看到第一次采用哪些属性的层次结构。也许您在代码或外部配置的其他地方定义了特定于概要文件的属性?