Verwenden von Spring @Value mit Standardwerten

1. Übersicht

Die @ Value- Annotation von Spring bietet eine bequeme Möglichkeit, Eigenschaftswerte in Komponenten einzufügen . Es ist auch sehr nützlich , sinnvolle Standardeinstellungen für Fälle bereitzustellen, in denen eine Eigenschaft möglicherweise nicht vorhanden ist .

Darauf konzentrieren wir uns in diesem Artikel - wie Sie einen Standardwert für die Annotation @Value Spring angeben . Eine ausführlichere Kurzanleitung zu @Value finden Sie im Artikel hier.

2. Standardeinstellungen für Zeichenfolgen

Schauen wir uns die grundlegende Syntax zum Festlegen eines Standardwerts für eine String- Eigenschaft an:

@Value("${some.key:my default value}") private String stringWithDefaultValue; 

Wenn some.key nicht aufgelöst werden kann, wird stringW ithDefaultValue auf den Standardwert " my default value" gesetzt .

Ebenso können wir einen String mit der Länge Null als Standardwert festlegen :

@Value("${some.key:})" private String stringWithBlankDefaultValue;

3. Primitive

Um einen Standardwert für primitive Typen wie boolean und int festzulegen , verwenden wir den Literalwert:

@Value("${some.key:true}") private boolean booleanWithDefaultValue;
@Value("${some.key:42}") private int intWithDefaultValue; 

Wenn wir wollten, könnten wir stattdessen primitive Wrapper verwenden, indem wir die Typen in Boolean und Integer ändern .

4. Arrays

Wir können auch eine durch Kommas getrennte Liste von Werten in ein Array einfügen:

@Value("${some.key:one,two,three}") private String[] stringArrayWithDefaults; @Value("${some.key:1,2,3}") private int[] intArrayWithDefaults;

Im ersten Beispiel oben werden die Werte " eins" , " zwei" und " drei" als Standardwerte in stringArrayWithDefaults eingefügt .

Im zweiten Beispiel werden die Werte 1, 2 und 3 standardmäßig in intArrayWithDefaults eingefügt .

5. Verwenden von SpEL

Wir können auch Spring Expression Language (SpEL) verwenden, um einen Ausdruck und eine Standardeinstellung anzugeben.

Im folgenden Beispiel erwarten wir, dass some.system.key als Systemeigenschaft festgelegt wird. Wenn dies nicht festgelegt ist, möchten wir standardmäßig " my default system property value" verwenden :

@Value("#{systemProperties['some.key'] ?: 'my default system property value'}") private String spelWithDefaultValue;

6. Fazit

In diesem kurzen Artikel haben wir uns angesehen, wie wir einen Standardwert für eine Eigenschaft festlegen können, deren Wert wir mithilfe der @ Value- Annotation von Spring injizieren möchten .

Wie üblich befinden sich alle in diesem Artikel verwendeten Codebeispiele im GitHub-Projekt.