Hauptfrage - das mag wie eine grundlegende Frage zu den Flugrouten erscheinen und ich könnte dies (irgendwie) während meiner Forschung verpasst haben, aber - ist es möglich auf Anwendungen zuzugreifen Dienste (Feder konfiguriert) bei dem Versuch, Daten mit Hilfe von Flyway zu migrieren? Nur wenige Details unten -Flyway DB migration - Wie man auf Anwendungsdienste zugreift (Spring configured)
Zusätzliche Details -
- Ich weiß, dass wir nicht Frühling Datendienste usw. injizieren (learnt from this SO question). Und ich verstehe das von einem Datenzugriffspunkt der Ansicht.
- Aber können wir verwenden nicht (durch Injektion) alle anderen Anwendungsdienste entweder während der Verwendung Zugweg (I für Beispiele gesucht - aber ohne Glück, und ohne auf flyway Dokumentation gemachten Angaben entweder)
- uns sagen lassen wir nicht verwenden können, Irgendwelche Spring-Dienste (und ich finde einen Weg zu umgehen, dass), können wir zugreifen, die Eigenschaften in application.properties/.yml deklariert (dies scheint auch nicht möglich).
Putting die oben in Zusammenhang mit unserer Forderung - wir ein paar neue Felder zu wenige Tabellen hinzugefügt haben und im Rahmen der Veröffentlichung wir diese Spalten mit Daten füllen wollen. Dies erfordert, dass wir (oder die Flugreise) den folgenden Algorithmus ausführen:
- Holen Sie Daten aus der ersten Tabelle.
- Verwenden Sie einige der Daten aus jeder Zeile, suchen Sie mehr Daten mit einem API-Aufruf . Die URL der API ist umgebungsspezifisch (daher der dritte Punkt oben).
- Aktualisieren Sie die von der API zurückgegebenen Daten in die neu hinzugefügten Spalten.
- Wiederholen Sie die obigen Schritte für die nächste Tabelle.
P.S. - Ich weiß, das Hinzufügen von Spalten, die von anderen Spalten in derselben Tabelle abhängen, entspricht nicht der 3. Normalen usw., aber aus Gründen, die außerhalb dieser Stelle liegen, ist es erforderlich.
Tech-Stack -
- Frühling Boot 1.3.x
- Flyway 4.0.3
- Mit Java Migration
Ein paar Beispiele, die ich versuchte, wie unten -
Mein Flugweg m Die Immigrationsklasse ist wie folgt.
public class R__MigrationYeah implements SpringJdbcMigration {
@Value("${mypath.subpath}") // this does not work !
private String someStringIwannaUse;
@Inject // this does not work either (even with Autowired or Const. injection)!
private MyService myService;
}
Ich habe einige Beiträge/Blogs gesehen, die komplizierten Details zu haben, wie Flugrouten konfigurieren MigrationResolver oder ConfigurationAware usw. - und nicht sicher, ob sie dieses Problem lösen (auch wenn sie es tun - es ist nur eine Menge Arbeit um ein schnelles Migrationsskript zu schreiben - ist das der einzige Weg?). Schließlich - Ich weiß, dass ich etwas vermisse, denn wenn wir Java - Code schreiben müssen, ohne in der Lage zu sein, ALLE vorhandenen Anwendungsklassen über Spring zu benutzen, dann ist das nichts anderes als ein unabhängiges Migrationsprojekt zu schreiben Mehrwert durch die Flyway, außer dass eine DB-Verbindung verfügbar ist) - Ich bin mir sicher, dass das nicht der Fall sein kann.
Jede Hilfe wäre toll dabei!
** UPDATE ** - wir haben schließlich die Umgehungslösung verwendet (wie im letzten Abschnitt in Frage, und auch in der Antwort unten von @DanielKafer). Da dies nicht von der Flyway Out-of-Box verfügbar ist. _P.S. nicht klar, warum die Frage oder die Antworten unten abgelehnt werden? Bin neu zu SO, vermisse ich etwas? –