Spring @ Value mit Standardwerten verwenden

Verwenden von Spring @Value mit Standardeinstellungen

1. Überblick

Die@Value-Anmerkung von Spring bietet eine bequeme Möglichkeit, Eigenschaftswerte in Komponenten einzufügen. Es ist auch fürprovide sensible defaults for cases where a property may not be present sehr nützlich.

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

2. String Defaults

Schauen wir uns die grundlegende Syntax zum Festlegen eines Standardwerts für die EigenschaftStringan:

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

Wennsome.key nicht aufgelöst werden kann, wirdstringWithDefaultValue auf den Standardwert „my default value”“ gesetzt.

In ähnlicher Weise können wirString mit der Länge Null als Standardwert festlegen:

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

3. Primitive

Um einen Standardwert für primitive Typen wieboolean undint 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 inBoolean undInteger ä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 "one”", "two”" und "three”" standardmäßig instringArrayWithDefaults eingefügt.

Im zweiten Beispiel werden die Werte1, 2, and 3 standardmäßig inintArrayWithDefaults eingefügt.

5. Verwenden von SpEL

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

Im folgenden Beispiel erwarten wir, dasssome.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 Annotation@Valuevon Spring injizieren möchten.

Wie üblich finden Sie alle in diesem Artikel verwendeten Codebeispiele inthe GitHub project.