Spring Boot:重写yml列表属性



对于我的单元测试,我试图覆盖;属性源[0]";元素,以便在单元测试期间不使用它。

但我的application-test.yaml文件中所做的更改似乎没有用于列表元素,我不知道问题是什么,也不知道正确的方法是什么

对spring.datasource所做的更改已正确应用(内存数据库已启动,日志状态为:以下1配置文件处于活动状态:"测试"(,但构建失败。因为在启动测试时,我的应用程序会尝试连接应用程序中定义的Azure密钥库。yaml:

java.lang.IllegalStateException: Failed to configure KeyVault property source
...
Caused by: java.net.UnknownHostException: my.vault.azure.net

测试类(Kotlin(:

@SpringBootTest
@ExtendWith(MockitoExtension::class)
@ActiveProfiles("test")
internal class BrablTest {...}

application.yaml:

spring:
datasource:
url: jdbc:sqlserver://localhost:1433;databaseName=my_db;applicationName=myApp;disableStatementPooling=false;enablePrepareOnFirstPreparedStatementCall=true;statementPoolingCacheSize=20
username: my_user
password:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerXADataSource
cloud:
azure:
keyvault:
secret:
property-sources[0]:
credential:
managed-identity-enabled: true
endpoint: https://my.vault.azure.net/

application-test.yaml:

spring:
datasource:
url: jdbc:h2:mem:testdb
cloud:
azure:
keyvault:
secret:
property-sources[0]:
enabled: false
endpoint: https://local.vault.azure.net/

版本:

  • Java 17.0.4
  • Spring Boot v2.7.4
  • 春季v5.3.23
  • Spring Cloud Azure依赖关系4.4.0

如有帮助,不胜感激。

感谢@spencergibb指出这一点。我又读了一遍文档,它写在那里,因为优先级更高,所以只有";application.yaml";被拿走。

合并复杂属性

当在多个配置文件中指定列表时,将使用优先级最高的配置文件(并且仅使用该配置文件(。

外部配置(订单(

配置数据文件按以下顺序考虑:

  1. 封装在jar中的应用程序属性(Application.properties和YAML变体(
  2. 封装在jar中的概要文件特定的应用程序属性(application-{Profile}.properties和YAML变体(

最新更新