Wie aktualisiere ich den Wert einer @Autowired String Bean im Frühling?

10

Ich habe eine Zeichenfolge, die ich als Bean autowiring bin. Der Wert für String wird über eine Eigenschaftendatei festgelegt und zur Laufzeit geladen. So viel kann ich bestätigen. Hier ist mein XML:

%Vor%

Und in meiner Anwendung, ich autowire in der Bohne:

%Vor%

Alles funktioniert gut. Ich habe mehrere Komponenten, die in dieser Bean autowire. Was ich versuche zu tun ist, während die Anwendung läuft, den Wert der Bean auf etwas anderes zu aktualisieren, so dass überall dort, wo die Bean autowired wird, der aktuellste Wert verwendet wird. Ist es möglich, dies zu tun, oder muss ich nur jedes Mal neu starten, wenn ich den Wert ändern möchte?

    
Pat 09.02.2012, 15:40
quelle

3 Antworten

3

Nachdem ich ein paar der anderen Antworten und Kommentare gelesen hatte, war ich in der Lage, eine Lösung zu finden. Ich habe am Ende eine einfache Klasse erstellt:

%Vor%

Ich habe meine XML-Datei aktualisiert:

%Vor%

Und alle @Component s aktualisiert, die sich in der Bean automatisch anstellen:

%Vor%

Ich bin mir sicher, dass es einen eleganteren Weg gibt, aber das hat genau so funktioniert, wie ich es brauchte.

    
Pat 09.02.2012, 16:34
quelle
3

Da String unveränderlich ist, können Sie nicht einfach den zugrunde liegenden Wert ändern und alle aktualisieren, die einen Verweis darauf haben.

Sie können die Referenz der String ändern, an der sich eine Instanz von Foo befindet, um auf eine andere String zu zeigen, aber sie wird nur von Objekten realisiert, die mit der spezifischen Foo you arbeiten aktualisiert. Wenn Foo ein Spring Singleton ist, sollte dies kein Problem sein ...

    
nicholas.hauschild 09.02.2012 15:48
quelle
0

Jedes Mal, wenn Sie Ihre spritzgegossenen Werte ändern möchten, indem Sie die Konfiguration ändern, müssen Sie Ihren Container neu starten, was normalerweise einen Neustart des Servers erforderlich macht.

    
Alberto Gutierrez 09.02.2012 16:03
quelle

Tags und Links