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%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% 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.
Ich kann Ihnen den Annotationsansatz sagen. Ich würde URLs und Konfiguration in der Eigenschaftendatei hinzufügen und etwas wie folgt tun:
%Vor%============================================
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%