Ich habe folgendes in einer Frühlingsbohne:
@Value("${myValue}")
private String value;
Der Wert wird korrekt injiziert. Die Variable muss jedoch optional sein. Sie wird als Befehlszeilenparameter übergeben (der dann mithilfe einer SimpleCommandLinePropertySource zum Spring-Kontext hinzugefügt wird ). Dieses Argument ist nicht immer vorhanden.
Ich habe beide folgenden Versuche unternommen, um einen Standardwert bereitzustellen:
@Value("${myValue:}")
@Value("${myValue:DEFAULT}")
In jedem Fall wird das Standardargument nach dem Einfügen des Doppelpunkts auch dann verwendet, wenn ein tatsächlicher Wert vorhanden ist. Dies scheint zu überschreiben, was Spring einfügen soll.
Was ist der richtige Weg, um diesen Wert anzugeben ? nicht erforderlich ist?
Vielen Dank
spring
spring-bean
user1052610
quelle
quelle
@Value("${some.prop:}")
funktioniert für mich. Dies ist die einzige Anmerkung zu dieser Variablen.Antworten:
Arbeiten Sie unter der Annahme, dass Sie mit "nicht erforderlich" meinen
null
dann ...Sie haben richtig bemerkt, dass Sie einen Standardwert rechts von einem
:
Zeichen angeben können. Ihr Beispiel war@Value("${myValue:DEFAULT}")
.Sie sind nicht auf einfache Zeichenfolgen als Standardwerte beschränkt. Sie können SPEL- Ausdrücke verwenden. Ein einfacher SPEL-Ausdruck, der zurückgegeben werden soll,
null
lautet:quelle
Wenn Sie Java 8 verwenden, können Sie die
java.util.Optional
Klasse nutzen. Sie müssen die Variable nur folgendermaßen deklarieren:Dann können Sie überprüfen, ob der Wert besser definiert ist oder nicht:
Ich hoffe es hilft!
quelle
Optional
Typen in Klassenfeldern zu verwenden.value
ist Null.