Ich versuche, ein Array von Zeichenfolgen aus der Datei application.yml zu laden. Dies ist die Konfiguration:
ignore:
filenames:
- .DS_Store
- .hg
Das ist die Klasse:
@Value("${ignore.filenames}")
private List<String> igonoredFileNames = new ArrayList<>();
Es gibt andere Konfigurationen in derselben Klasse, die einwandfrei geladen werden. In meiner Yaml-Datei befinden sich keine Registerkarten. Trotzdem bekomme ich folgende Ausnahme:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'ignore.filenames' in string value "${ignore.filenames}"
spring-boot
Bahadır Yağan
quelle
quelle
@Value
(solange ein Konverter registriert ist, was meiner Meinung nach in Spring Boot sein wird).@Configuration
, aber@Component
stattdessen war es der Trick.@Component
, dass dies angemessener ist: stackoverflow.com/questions/12229282/…Verwenden Sie in application.yml durch Kommas getrennte Werte
Java-Code für den Zugriff
Es funktioniert ;)
quelle
Aus den Spring Boot-Dokumenten https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
YAML-Listen werden als Eigenschaftsschlüssel mit [Index] -Deferenzern dargestellt, z. B. diese YAML:
Würde in diese Eigenschaften umgewandelt werden:
Um mit den Spring DataBinder-Dienstprogrammen an solche Eigenschaften zu binden (was auch immer der
@ConfigurationProperties
Fall ist), müssen Sie eine Eigenschaft in der Ziel-Bean des Typs habenjava.util.List
und entweder einen Setter bereitstellen oder sie mit einem veränderlichen Wert initialisieren, z. B. wird dies binden zu den Eigenschaften oben. So würde der Code der Frage aussehen.quelle
getXxx()
ist notwendig, damit es funktioniert, und muss ein verwendenList
, nichtSet
.Zusätzlich zu Ahmets Antwort können Sie der durch Koma getrennten Zeichenfolge mithilfe eines
>
Symbols Zeilenumbrüche hinzufügen .application.yml :
Java-Code :
quelle
Ahmets Antwort enthält Informationen zum Zuweisen der durch Kommas getrennten Werte zum String-Array.
Um die obige Konfiguration in verschiedenen Klassen zu verwenden, müssen Sie möglicherweise Getter / Setter dafür erstellen. Wenn Sie diese Konfiguration jedoch einmal laden und diese weiterhin als Bean mit Autowired-Annotation verwenden möchten, habe ich Folgendes erreicht:
In ConfigProvider.java
In externen Klassen:
Sie können dieselbe Liste überall sonst verwenden, indem Sie automatisch verdrahten.
quelle
@Configuration
zu Beginn der Klasse in hinzuConfigProvider.java
. Ansonsten habe ich für Source eine Bean vom Typ 'java.util.List' benötigt, die nicht gefunden werden konnte.yml-Datei:
Es gibt noch viel mehr, was Sie mit Spring Spel spielen können.
quelle
Nun, das einzige, was ich zum Laufen bringen kann, ist wie folgt:
Und vergessen Sie nicht die @ Konfiguration über Ihrer Klasse ...
Ohne die "," Trennung kein solches Glück ...
Funktioniert auch (Boot 1.5.8 Versie)
quelle
In meinem Fall war dies ein Syntaxproblem in der .yml-Datei. Ich hatte:
und die Liste in meiner .yml-Datei:
hat nicht in das mit @ Value annotierte Feld gelesen. Als ich die Syntax in der .yml-Datei geändert habe in:
es hat gut funktioniert.
quelle
yml-Datei:
quelle