Spring boot Spring启动管理属性文件

Spring boot Spring启动管理属性文件,spring-boot,kubernetes,microservices,kubernetes-helm,Spring Boot,Kubernetes,Microservices,Kubernetes Helm,我正在尝试改进我的微服务,以维护单个应用程序yaml,而不是维护多个配置文件。最初,我维护不同的配置文件,并在头盔环境特定值yaml中重复常见配置。现在的策略是将所有内容移动到values.yml,并在配置映射中维护特定于环境的值。我面临的问题是,我的应用程序yml现在看起来非常通用,带有占位符,出于同样的原因,测试运行失败,因为我无法为application.yml中的每个配置提供默认值。原因是,例如:mongodb集群端点格式在本地和其他环境中是不同的。我设法在test/resources下

我正在尝试改进我的微服务,以维护单个应用程序yaml,而不是维护多个配置文件。最初,我维护不同的配置文件,并在头盔环境特定值yaml中重复常见配置。现在的策略是将所有内容移动到values.yml,并在配置映射中维护特定于环境的值。我面临的问题是,我的应用程序yml现在看起来非常通用,带有占位符,出于同样的原因,测试运行失败,因为我无法为application.yml中的每个配置提供默认值。原因是,例如:mongodb集群端点格式在本地和其他环境中是不同的。我设法在test/resources下放置了一个本地特定的yaml文件,但不确定这是正确的方法。无论如何,我需要在main/resources下维护一个本地特定的yaml,以便在本地运行。所以本质上我也在测试资源下复制它。是否有更好的方法将application-local.yml加载到main resources下,以避免重复,或者有更好的方法作为一个整体来执行此操作?

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或prod

运行应用程序时,您可以手动指定配置文件,也可以在yml中设置,或在整个应用程序中使用的属性上设置属性

        spring.application.name: test
        spring.profiles.active: prod
二,。测试应用程序

运行需要访问ymlpropertyfile中属性的测试时,存在

无需重新定义配置。只需添加@ActiveProfileprofile名称

在你的测试中

例如:

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

谢谢@malvern dongeni。使用本地配置文件拆分文档并将其设置为基本测试类上的活动配置文件解决了此问题。但是,如果我需要在本地运行,我需要明确指定配置文件,您是否有任何建议来避免这种情况?@vipinev欢迎您在IDE中设置。对于IntelliJ,请转到编辑配置,然后是spring-boot。在活动配置文件下,然后添加您的本地配置文件。