Ich verwende derzeit die Annotation @Value Spring 3.1.x wie folgt:
@Value("${stuff.value:}")
private String value;
Dadurch wird ein leerer String in die Variable eingefügt, wenn das Attribut nicht vorhanden ist. Ich möchte null als Standard anstelle einer leeren Zeichenfolge haben. Natürlich möchte ich auch einen Fehler vermeiden, wenn die Eigenschaft stuff.value nicht gesetzt ist.
java
spring
spring-annotations
Kevin Schmidt
quelle
quelle
Das ist wirklich alt, aber Sie können Spring EL jetzt verwenden, z
@Value("${stuff.value:#{null}}")
Siehe diese Frage .
quelle
Danke an @vorburger:
setzt den String-Wert ohne andere Konfigurationen auf null .
quelle
Ich gebe @nosebrain Kredit, da ich nicht über "Nullwert" Bescheid wusste, aber ich bevorzuge es, die Verwendung von Nullwerten insgesamt zu vermeiden, insbesondere da es schwierig ist, sie
null
in einer Eigenschaftendatei darzustellen .Aber hier ist eine Alternative, bei der null ohne verwendet wird,
null-value
damit sie mit jedem Platzhalter für Eigenschaften funktioniert.Persönlich bevorzuge ich meinen Weg, weil Sie vielleicht später
stuff.value
ein durch Kommas getrennter Wert sein möchten oder vielleicht ist es einfacher, den Schalter aufzuschreiben. Es ist auch einfacher zu testen :)BEARBEITEN: basierend auf Ihren Kommentaren zur Verwendung von Aufzählungen und meiner Meinung, keine Null zu verwenden.
Das obige funktioniert gut für mich. Sie vermeiden null. Wenn Ihre Eigenschaftendateien explizit festlegen möchten, dass sie nicht damit umgehen möchten, tun Sie dies ( aber Sie müssen dies nicht einmal angeben, da dies standardmäßig NOTSET ist ).
null
ist sehr schlecht und ist anders alsNOTSET
. Dies bedeutet, dass der Feder- oder Komponententest ihn nicht eingestellt hat, weshalb IMHO ein Unterschied besteht. Ich würde wahrscheinlich immer noch die Setter-Notation (vorheriges Beispiel) verwenden, um den Unit-Test zu vereinfachen (private Variablen sind in einem Unit-Test schwer zu setzen).quelle
@Value("${stuff.value:NOTSET}")
funktionieren?Wenn Sie eine leere Zeichenfolge (Länge 0) als Standardwert für @Value einfügen müssen, verwenden Sie SPEL (Spring Expression Language) wie folgt:
# {''} gibt Ihnen nur eine leere Zeichenfolge als Standardwert für injizierten @ Wert.
von yl
quelle