Spring Boot: 从YAML文件中加载@Value
Spring Boot: 从YAML文件中加载@Value
我需要从一个.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
类或添加一个特殊的注解来启用对.yml
的支持吗?
编辑:
.yml
文件中包含一些其他属性,Spring Boot可以成功加载,比如dataSource.XXX
或hibernate.XXX
。