Spring Boot: 从YAML文件中加载@Value

17 浏览
0 Comments

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环境中:

  1. 当前目录的/config子目录。
  2. 当前目录
  3. 类路径的/config包
  4. 类路径根目录

同时也提到:

您还可以使用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.XXXhibernate.XXX

0