使用YAML的Spring @PropertySource
Spring Boot" title="Spring Boot">Spring Boot允许我们用YAML等效项替换application.properties文件。但是,我的测试似乎遇到了障碍。如果我对我的注释TestConfiguration
(一个简单的Java配置),则需要一个属性文件。
例如,这不起作用: @PropertySource(value = "classpath:application-test.yml")
如果我的YAML文件中有此文件:
db: url: jdbc:oracle:thin:@pathToMyDb
username: someUser
password: fakePassword
我将通过以下方式利用这些值:
@Value("${db.username}") String username
但是,我最终遇到这样的错误:
Could not resolve placeholder 'db.username' in string value "${db.username}"
我还如何在测试中利用YAML优势?
回答:
Spring-boot为此提供了一个帮助器,只需添加
@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class)
在测试类或抽象测试超类的顶部。
编辑:我五年前写了这个答案。它不适用于最新版本的Spring Boot。这就是我现在要做的(如有必要,请将Kotlin转换为Java):
@TestPropertySource(locations=["classpath:application.yml"])@ContextConfiguration(
initializers=[ConfigFileApplicationContextInitializer::class]
)
添加到顶部,然后
@Configuration open class TestConfig {
@Bean
open fun propertiesResolver(): PropertySourcesPlaceholderConfigurer {
return PropertySourcesPlaceholderConfigurer()
}
}
到上下文。
以上是 使用YAML的Spring @PropertySource 的全部内容, 来源链接: utcz.com/qa/413440.html