Heim  >  Artikel  >  Java  >  Wie realisiert SpringBoot den Konfigurationswechsel in verschiedenen Umgebungen über Profile?

Wie realisiert SpringBoot den Konfigurationswechsel in verschiedenen Umgebungen über Profile?

王林
王林nach vorne
2023-05-10 19:16:041589Durchsuche

SpringBoot verwendet Profile, um den Konfigurationswechsel in verschiedenen Umgebungen zu erreichen, z. B. in allgemeinen Entwicklungsumgebungen, Testumgebungen und Produktionsumgebungen.

Es gibt zwei Haupttypen häufig verwendeter Konfigurationsdateien in SpringBoot: Eigenschaftendateien und YML-Dateien. Bei Eigenschaftendateien wird es hauptsächlich durch mehrere Profilkonfigurationsdateien implementiert; bei YML-Dateien wird es hauptsächlich durch mehrere Fragmente implementiert (Konfigurationsfragmente sind in einer YML-Datei in drei horizontale Balken unterteilt).

Profil ist für die eigentliche Arbeit bequemer. Nachdem das SpringBoot-Programm entwickelt wurde, wird es schließlich zur Verwendung in ein JAR-Paket gepackt. Wir können die Konfigurationsdatei extern ablegen und den Profilnamen in der externen Konfigurationsdatei angeben welche Konfigurationsparameter der Umgebung (Entwicklungsumgebung, Testumgebung, Produktionsumgebung) verwendet werden sollen.

1. Projekte erstellen

Die Demo dieses Blogs erstellt zwei SpringBoot-Projekte und zeigt, wie die beiden Profile verwendet werden.

Demo1 wird über mehrere Eigenschaftendateien implementiert, und Demo2 wird über eine einzelne YML-Datei implementiert. Die Konstruktionsergebnisse sind wie folgt:

Wie realisiert SpringBoot den Konfigurationswechsel in verschiedenen Umgebungen über Profile?

Wenn die Klasse für SpringBoot geschrieben ist, befindet sie sich unter dem Paket oder Unterpaket Wo sich die Startklasse befindet, ist es nicht erforderlich, das Scanpaket für die Startklasse zu konfigurieren, da SpringBoot standardmäßig Anmerkungen in allen Klassendateien unter dem Paket scannt, in dem sich die Startklasse befindet, und seinen Unterpaketen. Um die Demonstration zu vereinfachen, schreiben nachfolgende Demos daher Klassendateien unter das Paket oder Unterpaket, in dem sich die Startklasse befindet.

In beiden Demos ist die TestController-Klasse mit demselben Code geschrieben, um einen Parameter-freien Schnittstellenzugriff zu ermöglichen. Das zurückgegebene Ergebnis ist der aktuell aktivierte Profilname und die in der Profilkonfigurationsdatei konfigurierte Portnummer, was für alle praktisch ist, um Demos durchzuführen Beim Überprüfen der Ergebnisse können Sie auch direkt die in der IDEA-Konsole gedruckten Informationen überprüfen, um die Ergebnisse zu überprüfen. Die spezifischen Inhalte der TestController-Klasse sind unten aufgeführt:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @Autowired
    private Environment env;

    @RequestMapping("/getport")
    public String getPort()
    {
        StringBuilder sb = new StringBuilder();

        String[] activeProfiles = env.getActiveProfiles();
        sb.append("启动的 profile 名称为:").append(activeProfiles[0]);

        sb.append("<br/>");

        String portValue = env.getProperty("server.port");
        sb.append("启动的端口为:").append(portValue);
        return sb.toString();
    }
}

2. Konfigurationsmethode für mehrere Dateien

Das SpringBoot-Programm in Demo1 verwendet die Eigenschaftendatei als Konfigurationsdatei, daher wird die Konfigurationsmethode für mehrere Dateien zum Implementieren des Profils verwendet .

Die Konfigurationsdatei von SpringBoot muss mit „Anwendung“ beginnen. In Demo1 wird die Namensform „Anwendungsprofilname.properties“ verwendet, um die Konfiguration mehrerer Umgebungen zu implementieren. Die drei Dateien application-pro.properties stellen die Konfigurationsdateien der Entwicklungsumgebung, der Testumgebung und der Produktionsumgebung dar. Der Einfachheit halber wird hier nur der Startport von SpringBoot konfiguriert:

# application-dev.properties 配置内容
# 配置文件必须以 application 开头
# 后面的 dev 表示 profile 配置文件的名称
server.port=8081
# application-test.properties 配置内容
# 配置文件必须以 application 开头
# 后面的 test 表示 profile 配置文件的名称
server.port=8082
# application-pro.properties 配置内容
# 配置文件必须以 application 开头
# 后面的 pro 表示 profile 配置文件的名称
server.port=8083

Wenn Sie eine bestimmte Profilkonfigurationsdatei verwenden möchten, die in application.properties konfiguriert werden muss:

# application-pro.properties 配置内容
# 本 Demo 中编写了多个以 application 开头的配置文件
# 通过以下配置项指定 profile 名称,设置所要启动的配置文件
spring.profiles.active=test

Dann starten Sie das SpringBoot-Programm von Demo1. Im obigen Beispiel lautet das Profil und Der entsprechende Startport ist 8082. Greifen Sie also auf die von TestController bereitgestellte Schnittstelle localhost:8082/getport zu, um die Profilkonfigurationsinformationen zu überprüfen.

3. Multi-Fragment-Konfigurationsmethode

Das SpringBoot-Programm in Demo2 verwendet YML-Dateien als Konfigurationsdateien, daher wird die Multi-Fragment-Konfiguration zum Implementieren des Profils verwendet.

Verwenden Sie drei horizontale Balken (---) in application.yml, um die Konfigurationsfragmente zu trennen, wie unten gezeigt:

# 本 Demo 中只编写了一个 application.yml 的配置文件
# 通过三个横杠(---)来分隔开 3 种配置文件
# 通过 spring.config.activate.on-profile 设置 profile 的名称

# 通过以下配置项指定 profile 名称,设置所要启动的配置文件
spring:
  profiles:
    active: pro
---
server:
  port: 9091

spring:
  config:
    activate:
      on-profile: dev
---
server:
  port: 9092

spring:
  config:
    activate:
      on-profile: test
---
server:
  port: 9093

spring:
  config:
    activate:
      on-profile: pro

Dann starten Sie das SpringBoot-Programm von Demo2. Das im obigen Beispiel verwendete Profil ist beispielsweise pro und der entsprechende Startup-Port ist 9093, sodass Sie die Profilkonfigurationsinformationen überprüfen können, indem Sie auf die in TestController bereitgestellte Schnittstelle localhost:9093/getport zugreifen.

4. Externe Konfigurationsdateien verwenden

Nachdem das SpringBoot-Programm entwickelt wurde, wird es zusammen mit der Konfigurationsdatei in ein JAR-Paket gepackt, sodass es unmöglich ist, die Konfigurationsdatei zu ändern. Daher können wir die Konfigurationsdatei nach außen kopieren, sie mit dem JAR-Paket zusammenfügen, das SpringBoot-Programm über die Befehlszeile starten und den verwendeten externen Konfigurationsdateipfad über den Befehlszeilenparameter (--spring.config) angeben. Standort). Die Profilkonfiguration kann in der externen Konfigurationsdatei geändert werden, um Konfigurationen in verschiedenen Umgebungen zu ändern.

Wir legen das von Demo1 gepackte JAR-Paket und die Konfigurationsdatei im Ordner d:javacodedemo1 ab, wie in der Abbildung unten gezeigt:

Wie realisiert SpringBoot den Konfigurationswechsel in verschiedenen Umgebungen über Profile?

Führen Sie dann die folgende Befehlszeile in diesem Verzeichnis aus, um das SpringBoot-Programm zu starten:

D:\javacode\demo1> java -jar .\demo1-0.0.1-SNAPSHOT.jar --spring.config.location=.\application.properties

Da das in application.properties konfigurierte Profil ein Test ist, wird Port 8082 gestartet.

Wir legen das von Demo2 gepackte JAR-Paket und die Konfigurationsdatei im Ordner d:javacodedemo2 ab, wie in der Abbildung unten gezeigt:

Wie realisiert SpringBoot den Konfigurationswechsel in verschiedenen Umgebungen über Profile?

Führen Sie dann die folgende Befehlszeile in diesem Verzeichnis aus, um das SpringBoot-Programm zu starten:

D:\javacode\demo2> java -jar .\demo2-0.0.1-SNAPSHOT.jar --spring.config.location=.\application.yml

Da das in application.yml konfigurierte Profil Pro ist, wird Port 9093 gestartet.

Das obige ist der detaillierte Inhalt vonWie realisiert SpringBoot den Konfigurationswechsel in verschiedenen Umgebungen über Profile?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen