Technologieaustausch

So konfigurieren Sie verschiedene Umgebungsvariablen und Prinzipien für Java-Projekte

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

So konfigurieren Sie verschiedene Profile

Zunächst erfordert ein Java-Projekt unterschiedliche Umgebungskonfigurationen. Beim Packen werden automatisch die entsprechenden Konfigurationen verwendet. Wie kann man es also erreichen?

Erstellen oder fügen Sie eine application.yml-Datei im Verzeichnis src/main/resources Ihres Spring Boot-Projekts hinzu. Hier sucht Spring Boot standardmäßig nach Konfigurationsdateien. Diese Datei kann allgemeine Konfigurationen hinzufügen.

Anschließend können Sie auch Dateien wie application-test.yml, application-prod.yml usw. im selben Verzeichnis erstellen. Spring Boot erkennt diese profilspezifischen Konfigurationsdateien automatisch. In diesen Dateien können Sie Parameter für verschiedene Umgebungen definieren, z. B. Datenbankadressen, Redis-Cache-Adressen usw.
Das heißt, im Verzeichnis src/main/resources können sich mehrere Dateien wie diese befinden:

application.yml
application-prod.yml
application-test.yml
  • 1
  • 2
  • 3

Anschließend können Sie application-test.yml und application-prod.yml verwenden, um zwei Variablen mit derselben Konfiguration, aber unterschiedlichen Werten zu deklarieren.Zum Beispiel
Anwendungstest.yml:

mysql:
  url: https://xx.test.com/mysql
  • 1
  • 2

Anwendungsprod.yml:

mysql:
  url: https://xx.online.com/mysql
  • 1
  • 2

Im Java-Code können Sie diese URL dynamisch verwenden:

    @Value("${mysql.url}")
    protected String mysqlUrl;
  • 1
  • 2

Perfekt.

Wie kann also automatisch die entsprechende profilspezifische.yml-Datei verwendet werden, wenn das System ausgeführt wird?Siehe unten

Das Prinzip der automatischen Profilumschaltung

Schauen wir uns an, wie Umgebungsvariablen Schicht für Schicht vom externen Netzwerk an das Projekt übergeben werden.
Zunächst wird ein Java-Projekt normalerweise von Docker gepackt. Beginnen wir also mit Docker:

  1. Docker-Paketierungsbefehl mit Umgebungsparametern:
docker build -f assistant-web-api/qke/Dockerfile -t docker-registry.qiyi.virtual/mbd-ai/assistant-web-api-test:$tag . --build-arg dc_env=test
  • 1

Schlüsselwörter,Build-Argument , legen Sie einen Parameter fest, dc_env=test

  1. Docker-Datei, deklarierendc_umgebungund wird für den Befehl mvn verwendet
ARG dc_env
...
RUN mvn -T 8 -DdisableRpm=true -pl '!assistant-web-manager' clean package -Dmaven.test.skip=true -P${dc_env}
  • 1
  • 2
  • 3

Beachten Sie, dass -P das Festlegen eines Profils bedeutet

  1. pom.xml, verschiedene Umgebungen konfigurieren

Der mvn-Befehl im vorherigen Schritt fügte -P hinzu. Wo wird er verwendet? Natürlich steht es in der Marven-Konfigurationsdatei, nämlich pom.xml.

<profiles>
        <profile>
            <id>test</id>
            <properties>
                <profile.active>test</profile.active>
                <log.env>test</log.env>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <profile.active>prod</profile.active>
                <log.env>prod</log.env>
            </properties>
        </profile>
    </profiles>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

Oben wurden 2 Umgebungsvariablen hinzugefügt.Für jede Variable werden Eigenschaften festgelegt, d. h.Profil.aktiv
Wo kann dieser Wert verwendet werden?

Verwenden Sie es in der Hauptdatei application.yml!

server:
  profiles:
    active: @profile.active@
  • 1
  • 2
  • 3

Definieren Sie basierend auf dem Wert der Variable „profile.active“ im vorherigen Schritt, welches Profil verwendet werden soll.

Seitdem wurden die aus dem Docker-Paket definierten Variablen an die Haupt-YML-Datei übergeben. In dieser Datei wird unabhängig davon, welcher Wert server.profiles.active ist, welche Sub-YML-Konfiguration verwendet. Wenn es sich beispielsweise um einen Test handelt, wird die Konfiguration von application-test.yml geladen! ! !

So wechseln Sie die Umgebung in der Entwicklungsumgebung

  1. Zuerst wird Marven zuerst synchronisiert. Überprüfen Sie nach der Synchronisierung eine Umgebung.
    Fügen Sie hier eine Bildbeschreibung ein

  2. Als nächstes kompilieren und packen Sie lokal und geben Sie Umgebungsvariablen über -P an:
    Fügen Sie hier eine Bildbeschreibung ein

  3. Klicken Sie abschließend zum Ausführen auf die obere rechte Ecke des Bildes unten. Es wird ein Popup-Fenster zum Bearbeiten angezeigt. Geben Sie im aktiven Profil die entsprechenden Umgebungsvariablen ein, z. B. test
    Fügen Sie hier eine Bildbeschreibung ein

  4. Abschließend können Sie auf Ausführen klicken!