Ändern Sie aktive Profile und aktualisieren Sie die ApplicationContext-Laufzeit in einer Spring Boot-Anwendung.

Ich habe eine Spring Boot-Webanwendung. Die Anwendung wird über Java-Klassen mit dem @ konfigurie@ konfigurierbar Anmerkung. Ich habe zwei Profile eingeführt: "Installieren", "Normal". Wenn das Installationsprofil aktiv ist, wird keine der Beans geladen, die eine DB-Verbindung erfordern. Ich möchte einen Controller erstellen, auf dem der Benutzer die DB-Verbindungsparameter einrichten kann. Wenn dies erledigt ist, möchte ich das aktive Profil von "install" auf "normal" ändern und den Anwendungskontext aktualisieren, damit Spring alle erforderlichen Bean-Vorgänge starten kann DB-Datenquelle.

Ich kann die Liste der aktiven Profile problemlos aus dem Code ändern, aber wenn ich versuche, den Anwendungskontext zu aktualisieren, erhalte ich das folgendeAusnahm:

`java.lang.IllegalStateException:
 GenericApplicationContext does not support multiple refresh attempts: just call 'refresh' once`

So boote ich meine Spring Boot App:

`new SpringApplicationBuilder().sources(MyApp.class)
.profiles("my-profile").build().run(args);` 

Weiß jemand, wie man eine Spring-Boot-App startet, mit der Sie den App-Kontext mehrmals aktualisieren können?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage