Spring @Value gebruiken met standaardwaarden

1. Overzicht

Lente @Waarde annotatie biedt een handige manier om eigenschapswaarden in componenten te injecteren. Het is ook best handig om zorg voor verstandige standaardwaarden voor gevallen waarin een eigenschap mogelijk niet aanwezig is.

Dat is waar we ons in dit artikel op zullen concentreren: hoe u een standaardwaarde specificeert voor de @Waarde Lente annotatie. Voor een meer gedetailleerde korte handleiding over @Waarde, zie het artikel hier.

2. Standaardinstellingen string

Laten we eens kijken naar de basissyntaxis voor het instellen van een standaardwaarde voor een Draad eigendom:

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

Als sommige.sleutel kan dan niet worden opgelost snaarWithDefaultValue wordt ingesteld op de standaardwaarde van "mijn standaardwaarde '.

Evenzo kunnen we een lengte nul instellen Draad als standaardwaarde:

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

3. Primitieven

Om een ​​standaardwaarde in te stellen voor primitieve typen zoals boolean en intgebruiken we de letterlijke waarde:

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

Als we zouden willen, zouden we in plaats daarvan primitieve wrappers kunnen gebruiken door de typen te wijzigen in Boolean en Geheel getal.

4. Arrays

We kunnen ook een door komma's gescheiden lijst met waarden in een array injecteren:

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

In het eerste voorbeeld hierboven zijn de waarden "een", “twee", en "drie" worden standaard geïnjecteerd in stringArrayWithDefaults.

In het tweede voorbeeld zijn de waarden 1, 2 en 3 worden standaard geïnjecteerd in intArrayWithDefaults.

5. Met behulp van SpEL

We kunnen ook Spring Expression Language (SpEL) gebruiken om een ​​uitdrukking en een standaard op te geven.

In het onderstaande voorbeeld verwachten we some.system.key in te stellen als systeemeigenschap, en als deze niet is ingesteld, willen we 'mijn standaardwaarde voor systeemeigenschappen ' standaard:

@Value ("# {systemProperties ['some.key']?: 'Mijn standaard systeemeigenschap'}") private String spelWithDefaultValue;

6. Conclusie

In dit korte artikel hebben we gekeken hoe we een standaardwaarde kunnen instellen voor een eigenschap waarvan we de waarde zouden willen hebben geïnjecteerd met Spring's @Waarde annotatie.

Zoals gewoonlijk zijn alle codevoorbeelden die in dit artikel worden gebruikt, te vinden in het GitHub-project.