1

Einstellung ist es möglich, @Value von einer anderen VariablenFrühling @value aus einer anderen Variablen

Für zB einzustellen.

System properties : firstvariable=hello ,secondvariable=world 

@Value(#{systemProperties['firstvariable']) 
String var1; 

Nun möchte ich var2 haben möchte mit var1 und von ihm abhängig verkettet werden, so etwas wie

@Value(var1 + #{systemProperties['secondvariable'] 
    String var2; 

public void message(){ System.out.printlng("Message : " + var2); 

Antwort

5

Nein, können Sie nicht tun, oder Sie werden The value for annotation attribute Value.value must be a constant expression bekommen.

Sie können jedoch gleiche erreichen mit

folgenden

In Ihrer Eigenschaft Datei

firstvariable=hello 
secondvariable=${firstvariable}world 

und lesen dann Wert als

@Value("${secondvariable}") 
private String var2; 

Ausgabe von System.out.println("Message : " + var2) würde Message : helloworld sein.

+0

I Syntax müssen innerhalb @Value – sash84

+0

verketten Wenn Ihr Endziel ist Wert von var1 und var2 verketten, warum Sie nicht einfach eine Instanz Methode vorstellen wie folgt 'String getVar2() { Rückgabe var1 + var2; } ' –

1

Als Frage verwenden Sie die vordefinierte systemProperties-Variable mit EL-Ablauf.
Meine Vermutung ist, dass die Bedeutung Java-Systemeigenschaften (z. B. -D-Optionen) zu verwenden war.

Als @value el Ausdrücke akzeptieren Sie

@Value("#{systemProperties['firstvariable']}#systemProperties['secondvariable']}") 
private String message; 

Sie

sagte verwenden

Nun möchte Ich mag var2 haben mit var1 und darauf angewiesen verketteten werden

Beachten Sie, dass die Änderung von var2 in diesem Fall keine Auswirkung auf die Nachricht hat, da die Nachricht bei der Bea gesetzt ist n initialisiert wird

Verwandte Themen