Dynamische Quellbohnen erstellen und Eigenschaften für vorhandene Bohnen ändern

8

Ich habe es erfolgreich geschafft, dynamische Änderungen von Datenbankverbindungen zu implementieren, indem ich Ссылка Artikel befolge .

Aber jetzt ist das Problem, ich habe eine Liste von Datenbank-URLs in einer Konfigurationsdatei, die von einer Legacy-Anwendung verwaltet wird.

Gibt es eine Möglichkeit, Beans in diesem Spring-Kontext aus einer Liste von Werten (d. h. Year2011DataSource, Year2012DataSource, ...) zu erstellen und die Karte der dataSource-Bean mit den gerade erstellten Beans aufzufüllen?

%Vor%     
Vedran 23.08.2012, 11:19
quelle

4 Antworten

8

Eine gute Lösung für diese Anforderung, denke ich, ist eine benutzerdefinierte BeanFactoryPostProcessor - lies die Legacy-Konfiguration ein und erzeuge die Datenquellen im benutzerdefinierten Bean-Factory-Postprozessor:

%Vor%     
Biju Kunjummen 23.08.2012, 13:39
quelle
1

Soweit ich weiß, gibt es keine gebrauchsfertige Lösung mit XML-Konfiguration. Eine einfache Lösung, um dies zu erreichen, finden Sie in dieser Antwort unter Verwendung von FactoryBean abstraction im Frühjahr.

    
nobeh 23.08.2012 11:36
quelle
1

Ich kann Ihnen den Annotationsansatz sagen. Ich würde URLs und Konfiguration in der Eigenschaftendatei hinzufügen und etwas wie folgt tun:

%Vor%     
Nandkumar Tekale 23.08.2012 11:33
quelle
1

============================================

Indem ich Bijus Tipp befolge, funktioniert alles so:

============================================

"Datenbank URLs nach Jahr" Abschnitt in der Frühjahr-Konfiguration ist nicht mehr, Bohnen sind in der BeanFactoryPostProcessor erstellt.

"dataSource" Bean hat seine Eigenschaften auf Dummy-Daten gesetzt, die im BeanFactoryPostProcessor ersetzt werden:

%Vor%

Und das ist die BeanFactoryPostProcessor Implementierung:

%Vor%     
Vedran 27.08.2012 08:06
quelle

Tags und Links