Próbuję załadować tablicę ciągów z pliku application.yml. To jest konfiguracja:
ignore:
filenames:
- .DS_Store
- .hg
To jest klasa:
@Value("${ignore.filenames}")
private List<String> igonoredFileNames = new ArrayList<>();
Istnieją inne konfiguracje w tej samej klasie, które ładują się dobrze. W moim pliku yaml nie ma żadnych zakładek. Nadal mam następujący wyjątek:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'ignore.filenames' in string value "${ignore.filenames}"
spring-boot
Bahadır Yağan
źródło
źródło
@Value
(o ile zarejestrowany jest konwerter, który, jak sądzę, będzie w Spring Boot).@Configuration
, ale użycie@Component
zamiast tego załatwiło sprawę .@Component
jest bardziej odpowiedni: stackoverflow.com/questions/12229282/ ...użyj wartości oddzielonych przecinkami w application.yml
kod java umożliwiający dostęp
To działa ;)
źródło
Z dokumentacji rozruchowej wiosennej https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
Listy YAML są reprezentowane jako klucze właściwości z wyłuskiwaniem [indeksu], na przykład ten YAML:
Zostałyby przekształcone w te właściwości:
Aby powiązać z właściwościami takimi jak ta za pomocą narzędzi Spring DataBinder (co jest tym, co
@ConfigurationProperties
robi), musisz mieć właściwość w docelowym komponencie bean typujava.util.List
i musisz albo podać setter, albo zainicjować go zmienną wartością, np. To będzie wiązać do właściwości powyżej. Oto jak wyglądałby kod pytania.źródło
getXxx()
jest konieczne, aby działało i musi używać aList
nieSet
.Oprócz odpowiedzi Ahmeta możesz dodać znaki końca linii do ciągu oddzielonego przecinkami za pomocą
>
symbolu.application.yml :
Kod Java :
źródło
Odpowiedź Ahmeta wyjaśnia, jak przypisać wartości oddzielone przecinkami do tablicy String.
Aby użyć powyższej konfiguracji w różnych klasach, może być konieczne utworzenie do tego metod pobierających / ustawiających. Ale jeśli chciałbyś załadować tę konfigurację raz i nadal używać jej jako elementu bean z adnotacją Autowired, oto jak osiągnąłem:
W ConfigProvider.java
Na zajęciach zewnętrznych:
możesz używać tej samej listy wszędzie indziej, korzystając z automatycznego okablowania.
źródło
@Configuration
na początku zajęć wConfigProvider.java
. W przeciwnym razie źródło wymagało komponentu bean typu „java.util.List”, którego nie można znaleźć.yml plik:
Dzięki Spring SpEL możesz grać o wiele więcej.
źródło
Cóż, jedyne, co mogę zrobić, to tak:
I nie zapomnij o @Configuration nad twoją klasą ....
Bez separacji „,” nie ma takiego szczęścia ...
Działa też (wersja boot 1.5.8)
źródło
W moim przypadku był to problem ze składnią w pliku .yml. Miałem:
a lista w moim pliku .yml:
nie czyta w polu z adnotacją @ Wartość. Kiedy zmieniłem składnię w pliku .yml na:
działało dobrze.
źródło
yml plik:
źródło