Spring 引导管理属性文件
Spring Boot Managing Properties File
我正在尝试改造我的微服务以维护单个应用程序 yaml,而不是维护多个配置文件。最初我维护不同的配置文件,并且在 helm 环境特定值 yaml 中重复通用配置。现在的策略是将所有内容移动到 values.yml 并在配置映射中维护特定于环境的值。我面临的问题是我的应用程序 yml 现在看起来非常通用,带有占位符,出于同样的原因,测试运行失败,因为我无法为 application.yml 中的每个配置提供默认值。原因是,例如:mongodb 集群端点格式在本地与其他环境中不同。我设法将本地特定的 yaml 文件放在 test/resources 下,但不确定这是正确的方法。无论如何,我需要在 main/resources 下为 运行 在本地维护一个本地特定的 yaml。所以基本上我也在测试资源下复制它。有没有更好的指向测试的方法来加载主要资源下的应用程序-local.yml,这样我就可以避免重复,或者有没有更好的方法来整体执行此操作?
1.在一个文件中处理多个配置
您可以将所有配置添加到一个 属性 文件中,如下图所示
spring.application.name: test. ## Used for all profiles
---
spring.config.active.on-profile:dev
spring.database.host: localhost
spring.database.name: testing
---
spring.config.active.on-profile:prod. ##You can use spring.profiles:prod
spring.database.host: localhost
spring.database.name: testing
---
---
标记 yml 文档拆分的位置,而 #---
标记属性文件拆分的位置。
多文档属性文件通常与以下激活属性结合使用
spring.config.activate.on-profile
spring.config.activate.on.on-cloud-platform
未指定配置文件名称定义的所有 属性 定义用于所有配置文件。在上述情况下 spring.application.name
将用于所有配置文件 dev or prod
.
当 运行 应用程序时,您可以手动指定配置文件,或者您可以在 yml 中设置或在整个应用程序中使用的属性上设置属性。
spring.application.name: test
spring.profiles.active: prod
2。测试您的应用程序
当 运行 测试需要访问 yml(property)file
中的属性时,有
无需重新定义您的 configurations.Just 添加 @ActiveProfile("profile-name")
在你的测试中。
例如:
@ActiveProfiles("dev")
@SpringBootTest(webEnvironmentSpringBootTest.WebEnvironment.RANDOM_PORT)
我正在尝试改造我的微服务以维护单个应用程序 yaml,而不是维护多个配置文件。最初我维护不同的配置文件,并且在 helm 环境特定值 yaml 中重复通用配置。现在的策略是将所有内容移动到 values.yml 并在配置映射中维护特定于环境的值。我面临的问题是我的应用程序 yml 现在看起来非常通用,带有占位符,出于同样的原因,测试运行失败,因为我无法为 application.yml 中的每个配置提供默认值。原因是,例如:mongodb 集群端点格式在本地与其他环境中不同。我设法将本地特定的 yaml 文件放在 test/resources 下,但不确定这是正确的方法。无论如何,我需要在 main/resources 下为 运行 在本地维护一个本地特定的 yaml。所以基本上我也在测试资源下复制它。有没有更好的指向测试的方法来加载主要资源下的应用程序-local.yml,这样我就可以避免重复,或者有没有更好的方法来整体执行此操作?
1.在一个文件中处理多个配置
您可以将所有配置添加到一个 属性 文件中,如下图所示
spring.application.name: test. ## Used for all profiles
---
spring.config.active.on-profile:dev
spring.database.host: localhost
spring.database.name: testing
---
spring.config.active.on-profile:prod. ##You can use spring.profiles:prod
spring.database.host: localhost
spring.database.name: testing
---
---
标记 yml 文档拆分的位置,而 #---
标记属性文件拆分的位置。
多文档属性文件通常与以下激活属性结合使用
spring.config.activate.on-profile
spring.config.activate.on.on-cloud-platform
未指定配置文件名称定义的所有 属性 定义用于所有配置文件。在上述情况下 spring.application.name
将用于所有配置文件 dev or prod
.
当 运行 应用程序时,您可以手动指定配置文件,或者您可以在 yml 中设置或在整个应用程序中使用的属性上设置属性。
spring.application.name: test
spring.profiles.active: prod
2。测试您的应用程序
当 运行 测试需要访问 yml(property)file
中的属性时,有
无需重新定义您的 configurations.Just 添加 @ActiveProfile("profile-name")
在你的测试中。
例如:
@ActiveProfiles("dev")
@SpringBootTest(webEnvironmentSpringBootTest.WebEnvironment.RANDOM_PORT)