Spring Boot Managing Properties File



我正在尝试修改我的微服务,以维护单个应用程序,而不是维护多个配置文件。最初,我维护不同的配置文件,并且在不同的环境中重复通用配置。现在的策略是把一切都转移到价值观上。在配置映射中维护特定于环境的值。我面临的问题是,我的应用程序yml现在看起来非常通用,带有占位符,并且由于同样的原因,测试运行失败,因为我无法为application.yml中的每个配置提供默认值。原因是,例如:mongodb集群端点格式在本地与其他环境中不同。我设法将本地特定的yaml文件放在test/resources下,但不确定这是正确的方法。无论如何,我需要在main/resources下维护本地特定的yaml以便在本地运行。实际上我在测试资源下也复制了它。有没有更好的方法指向测试来加载应用程序本地。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文档的分割位置,而#---标记属性文件的分割位置。

多文档属性文件通常与以下激活属性一起使用

  1. spring.config.activate.on-profile
  2. 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中的属性的测试时,

不需要重新定义配置。只需添加@ActiveProfile("profile-name")

你的测试

例如:

@ActiveProfiles("dev")  
@SpringBootTest(webEnvironmentSpringBootTest.WebEnvironment.RANDOM_PORT)



最新更新