我需要从.yml
文件加载一个属性,该文件包含应用程序可以从中读取文件的文件夹的路径。
我使用下面的代码来注入该属性:
@Value("${files.upload.baseDir}")
private String pathToFileFolder;
用于开发的.yml
文件位于src/main/resources/config/application.yml
,im下,在生产中使用以下命令运行应用程序,以覆盖开发设置:
java -jar app.jar --spring.config.location=/path/to/application-production.yml
Sping Boot 文档说明:
SpringApplication将从application.properties以下位置的www.example.com文件加载属性,并将其添加到Spring环境中:
1.当前目录的/config子目录。
1.当前目录
1.类路径/配置包
1.类路径根
以及:
您也可以使用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
类或添加一个特殊的注解来启用Sping Boot 中对.yml
的支持?
编辑:.yml
文件包含一些其他属性,这些属性可以通过Sping Boot 成功加载,如dataSource.XXX
或hibernate.XXX
。
7条答案
按热度按时间am46iovg1#
例如:application.yml
您的班级:
zynd9foi2#
M.代努姆是正确的,我提供的设置是工作的-
yml
文件缩进错误,所以无法找到属性。00jrzges3#
我发现上面的方法对我不起作用,因为我试图在构造函数中访问变量,但是在构造时,值还没有被注入,最后我使用了下面的方法:https://mrhaki.blogspot.com/2015/04/spring-sweets-using-value-for.html
也许这对其他人有帮助。
wtlkbnrh4#
对我来说是财产文件里的重复键导致了这个...
我在大的yml文件中不知不觉地使用了相同的键。
slmsl1lt5#
在yml属性文件中:
创建您的Yaml属性配置类:
最后得到它并使用它:
kxxlusnw6#
我遇到了
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder
问题,因为我在properties.yaml中设置了测试Sping Boot 配置文件。当运行没有配置文件的应用程序时,Spring无法找到测试配置文件的属性。因此,从属性或yaml中删除spring Boot profile,或者使用启用的profile运行应用程序。
配置文件示例如下:
guykilcj7#
对于那些在使用@RestController时遇到问题的人,我的做法如下: