Я пытаюсь загрузить массив строк из файла application.yml. Это конфиг:
ignore:
filenames:
- .DS_Store
- .hg
Это класс:
@Value("${ignore.filenames}")
private List<String> igonoredFileNames = new ArrayList<>();
В том же классе есть другие конфигурации, которые загружаются просто отлично. В моем файле yaml нет вкладок. Тем не менее я получаю следующее исключение:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'ignore.filenames' in string value "${ignore.filenames}"
spring-boot
Бахадыр Яган
источник
источник
@Value
(до тех пор, пока зарегистрирован конвертер, который будет в Spring Boot, я думаю).@Configuration
, но@Component
вместо этого добился цели.@Component
это более уместно: stackoverflow.com/questions/12229282/…используйте разделенные запятыми значения в application.yml
Java-код для доступа
Это работает ;)
источник
Из весенних загрузочных документов https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
Списки YAML представлены в виде ключей свойств с разыменованием [index], например, это YAML:
Будет преобразован в эти свойства:
Для привязки к таким свойствам с помощью утилит Spring DataBinder (что и
@ConfigurationProperties
делает) вам нужно иметь свойство в целевом bean-компоненте типаjava.util.List
и вам нужно либо предоставить установщик, либо инициализировать его изменяемым значением, например, это будет связывать к свойствам выше. Вот как будет выглядеть код вопроса.источник
getXxx()
необходим для работы, и должен использовать, аList
неSet
.servers: ${my.servers}
? Чтобы попастьmy.servers[0]
иmy.servers[1]
в Ямл? Я пытаюсь иметь сценически зависимые конфигурацииВ дополнение к ответу Ахмета вы можете добавить разрывы строк к строке, разделенной запятой, используя
>
символ.application.yml :
Java-код :
источник
Ответ Ахмета дает представление о том, как присваивать значения через запятую массиву String.
Чтобы использовать указанную выше конфигурацию в разных классах, вам может потребоваться создать для нее геттеры / сеттеры. Но если вы хотите загрузить эту конфигурацию один раз и продолжать использовать ее как компонент с аннотацией Autowired, вот как я это сделал:
В ConfigProvider.java
На внешних занятиях:
Вы можете использовать тот же список в любом месте, используя автопроводку.
источник
@Configuration
в начале класса вConfigProvider.java
. В противном случае я получил источник требуется bean-компонент типа «java.util.List», который не может быть найден.YML-файл:
С пружинным SPEL можно играть намного больше.
источник
Ну, единственное, что я могу заставить это работать, это так:
И не забудьте @Configuration над вашим классом ....
Без "," разделения, нет такой удачи ...
Тоже работает (загрузочная версия 1.5.8)
источник
В моем случае это была проблема с синтаксисом в файле .yml. Я имел:
и список в моем файле .yml:
не читал в аннотированное поле @ Value. Когда я изменил синтаксис в файле .yml:
это работало нормально.
источник
YML-файл:
источник