Spring 引导应用程序文件分层



>我有 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'

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

来自 Spring Boot 参考

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

特定于配置文件的属性是从与标准 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

最新更新