【发布时间】:2016-04-06 00:44:21
【问题描述】:
我需要从.yml 文件加载一个属性,该文件包含应用程序可以从中读取文件的文件夹的路径。
我正在使用以下代码注入属性:
@Value("${files.upload.baseDir}")
private String pathToFileFolder;
用于开发的.yml 文件位于src/main/resources/config/application.yml 下,我在生产中使用以下命令运行应用程序,以覆盖开发设置:
java -jar app.jar --spring.config.location=/path/to/application-production.yml
Spring Boot 文档说:
SpringApplication 将从以下位置的 application.properties 文件中加载属性并将它们添加到 Spring 环境中:
当前目录的 /config 子目录。
当前目录
类路径 /config 包
类路径根
还有:
您还可以使用 YAML ('.yml') 文件来替代“.properties”。
.yml 文件包含:
{...}
files:
upload:
baseDir: /Users/Thomas/Code/IdeaProjects/project1/files
{...}
而我的Application 类被注释为:
@SpringBootApplication
@EnableCaching
当我运行应用程序时,我得到一个异常:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'files.upload.baseDir' in string value "${files.upload.baseDir}"
是否必须使用 YamlPropertySourceLoader 类或添加特殊注解才能在 Spring Boot 中启用对 .yml 的支持?
编辑:
.yml 文件包含一些其他属性,这些属性可以由 Spring Boot 成功加载,例如 dataSource.XXX 或 hibernate.XXX。
【问题讨论】:
-
用 --debug 运行你的程序
-
您是否尝试过使用与开发中相同的
.yaml文件?只需将它带到项目之外并尝试使用命令执行它。这样,您将丢弃文件中的任何拼写错误。 -
属性不存在...
upload:之前的空格太多。 -
请查看我关于如何在 Spring 中读取 YAML 文件并将其包含在 JUnit 和 TestNG 测试中的评论:stackoverflow.com/a/37270778/3634283
标签: java spring spring-boot yaml