【发布时间】:2014-02-11 20:01:35
【问题描述】:
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 将 YAML 文件展平,使其显示为带有点符号的属性文件。这种扁平化并没有发生。
-
确认一下,这在非测试代码中有效吗?
-
是的。这是一个解释 projects.spring.io/spring-boot/docs/spring-boot-actuator/… 的文档,页面下方是“注意 YAML 对象是使用句点分隔符展平的。”
-
SpingBoot 表示无法使用 PropertySource 加载 YAML:24.6.4 YAML 缺点 YAML 文件无法通过 @PropertySource 注释加载。因此,如果您需要以这种方式加载值,则需要使用属性文件。
标签: spring spring-boot