Ответ 1
M. Deinum прав, настройка, которую я предоставил, работает - файл yml
был отклонён неправильно, поэтому свойство не удалось найти.
Мне нужно загрузить свойство из .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
.
M. Deinum прав, настройка, которую я предоставил, работает - файл yml
был отклонён неправильно, поэтому свойство не удалось найти.
Для меня дубликат ключа в файле свойств вызвал это...
Я использовал тот же ключ, не зная, в большом файле yml.
key:
key1: value
key2: value
key:
key3: value