Spring boot. SQL-Skripts zu starten und die Daten beim starten der Anwendung
Ich bin die Entwicklung einer spring-boot-Anwendung. Im moment einige meiner configs sind hart codiert sind (z.B. Hystrix Eigenschaften).
Also ich würde gerne diese configs auf meine Anwendung start-up-Zeit oder kurz nach.
Ist es möglich, dass mit spring-boot? Ich meine, zum ausführen von SQL-Skript auf start-up und get-Daten.
Wie sollten Eigenschaften/configs abgerufen und gespeichert werden in meiner Anwendung?
Ich bin mit MyBatis-und Oracle-DB.
- Setzen Sie Sie in der Anwendung.yml. Machen Sie Profil abhängig.
- Ich hatte eine solche Idee, aber im moment würde ich mag, um Werte aus der DB 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Standardmäßig, Spring-Boot lädt
data.sql
- und/oderdata-${platform}.sql
.Jedoch halten Sie im Verstand, daß das script geladen werden, das bei jedem angehen, so würde ich denken, es macht mehr Sinn (zumindest für die Produktion), einfach nur die Werte bereits in der Datenbank vorhanden sind, nicht erneut eingefügt, die bei jedem start. Ich persönlich habe nur verwendet Datenbank-Initialisierung für test/dev-Zwecke bei Verwendung eines memory-Datenbank. Noch, dies ist die Funktion von Feder-Boot.
Quelle: spring-boot-howto-Datenbank-Initialisierung:
src/main/resources/Daten-oracle.sql:
spring.datasource.platform=oracle
.spring.datasource.data=myscript.sql
.data.sql
Spring-boot lädt auchschema.sql
(vordata.sql
).Wenn Sie einfügen möchten die Daten basierend auf einer business-Logik, die ich empfehlen würde, Sie Ereignis-Listener. Also im Grunde beim starten der Anwendung "OnApplicationEvent" wie es ist annotiert mit @EventListener-Methode wird automatisch aufgerufen.
Auch wie in Ihrem Fall, die Sie benötigen, um die Daten zu erhalten, nutzen Sie einfach Ihre repository-Objekt, um die Daten als gut.
Hier ein Beispiel:
Wenn Sie immer von der Anwendung.Eigenschaften-Datei, die Sie verwenden können, Environment-Klasse.
Wie
oder definieren Sie Ihre eigenen property-Datei. dann können Sie von es mit
@PropertySource(name = "myProperties", value = "example.properties")
annotationMüssen Sie die @Value-annotation um einen bestimmten Wert aus der property-Datei, die Sie definiert haben.
Und Sie möchten, um etwas zu starten, wenn die Anwendung nur gestartet, können Sie dies, bevor Sie eine Methode
Aber müssen verwenden von @ - Service oder der @Component-Annotation, welche Klasse hat die Methode.
Völlig, können Sie diese verwenden.
Beispiel.Eigenschaften :
Beispiel-Klasse :