Мне нужно загрузить свойство из .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
Документация Spring Boot говорит:
SpringApplication загрузит свойства из файлов application.properties в следующих местах и добавит их в среду Spring:
Подкаталог A/config текущего каталога.
Текущий каталог
Пакет classpath/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 в Spring Boot?
Изменить. Файл .yml содержит некоторые другие свойства, которые успешно загружаются Spring Boot, например dataSource.XXX или hibernate.XXX.