我需要从 .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 Environment:当前目录的A / config子目录 . 当前目录A classpath / config包类路径根目录
以及:
您还可以使用YAML(' . mil')文件替代'.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
.
2 回答
M. Deinum是对的,我提供的设置正在运行 -
yml
文件缩进错误,因此无法找到该属性 .对我来说,属性文件中的重复键导致了这个......
我在大yml文件中不知不觉地使用了相同的密钥 .