Brug af Spring @Value med standardindstillinger

1. Oversigt

Forårets @Værdi annotation giver en bekvem måde at indsprøjte egenskabsværdier i komponenter på. Det er også ret nyttigt at give fornuftige misligholdelser i tilfælde, hvor en ejendom muligvis ikke er til stede.

Det er det, vi vil fokusere på i denne artikel - hvordan man angiver en standardværdi for @Værdi Forårsnotering. For en mere detaljeret hurtig guide til @Værdi, se artiklen her.

2. Standardindstillinger for streng

Lad os se på den grundlæggende syntaks til indstilling af en standardværdi for en Snor ejendom:

@Value ("$ {some.key: min standardværdi}") privat strengstrengWithDefaultValue; 

Hvis noget. nøgle kan ikke løses, så strengWithDefaultValue indstilles til standardværdien for “min standardværdi ”.

På samme måde kan vi indstille en nul-længde Snor som standardværdi:

@Value ("$ {some.key:})" privat strengstrengWithBlankDefaultValue;

3. Primitiver

For at indstille en standardværdi for primitive typer som f.eks boolsk og int, bruger vi den bogstavelige værdi:

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

Hvis vi ville, kunne vi i stedet bruge primitive indpakninger ved at ændre typerne til Boolsk og Heltal.

4. Arrays

Vi kan også indsprøjte en komma-adskilt liste over værdier i en matrix:

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

I det første eksempel ovenfor er værdierne “en", “to"og “tre" injiceres som standardindstillinger stringArrayWithDefaults.

I det andet eksempel er værdierne 1, 2 og 3 injiceres som standardindstillinger intArrayWithDefaults.

5. Brug af SpEL

Vi kan også bruge Spring Expression Language (SpEL) til at angive et udtryk og en standard.

I eksemplet nedenfor forventer vi some.system.key skal indstilles som en systemegenskab, og hvis den ikke er indstillet, vil vi bruge “min standardværdi for systemegenskaber ” som standard:

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

6. Konklusion

I denne hurtige artikel så vi på, hvordan vi kan indstille en standardværdi for en ejendom, hvis værdi vi gerne vil have injiceret ved hjælp af Spring's @Værdi kommentar.

Som normalt kan alle kodeeksempler, der bruges i denne artikel, findes i GitHub-projektet.