Inhaltsverzeichnis
1. Projekte erstellen
2. Konfigurationsmethode für mehrere Dateien
3. Multi-Fragment-Konfigurationsmethode
4. Externe Konfigurationsdateien verwenden
Heim Java javaLernprogramm Wie realisiert SpringBoot den Konfigurationswechsel in verschiedenen Umgebungen über Profile?

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

May 10, 2023 pm 07:16 PM
profile springboot

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();
    }
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie Springboot Jasypt integriert, um die Verschlüsselung von Konfigurationsdateien zu implementieren Wie Springboot Jasypt integriert, um die Verschlüsselung von Konfigurationsdateien zu implementieren Jun 01, 2023 am 08:55 AM

Einführung in Jasypt Jasypt ist eine Java-Bibliothek, die es einem Entwickler ermöglicht, seinem Projekt mit minimalem Aufwand grundlegende Verschlüsselungsfunktionen hinzuzufügen und kein tiefes Verständnis der Funktionsweise der Verschlüsselung erfordert. standardbasierte Verschlüsselungstechnologie. Passwörter, Text, Zahlen, Binärdateien verschlüsseln ... Geeignet für die Integration in Spring-basierte Anwendungen, offene API, zur Verwendung mit jedem JCE-Anbieter ... Fügen Sie die folgende Abhängigkeit hinzu: com.github.ulisesbocchiojasypt-spring-boot-starter2 Die Vorteile von Jasypt schützen unsere Systemsicherheit. Selbst wenn der Code durchgesickert ist, kann die Datenquelle garantiert werden.

Wie SpringBoot Redisson integriert, um eine Verzögerungswarteschlange zu implementieren Wie SpringBoot Redisson integriert, um eine Verzögerungswarteschlange zu implementieren May 30, 2023 pm 02:40 PM

Nutzungsszenario 1. Die Bestellung wurde erfolgreich aufgegeben, die Zahlung erfolgte jedoch nicht innerhalb von 30 Minuten. Die Zahlung ist abgelaufen und die Bestellung wurde automatisch storniert. 2. Die Bestellung wurde unterzeichnet und es wurde 7 Tage lang keine Bewertung durchgeführt. Wenn die Bestellung abläuft und nicht ausgewertet wird, wird die Bestellung standardmäßig positiv bewertet. Wenn der Händler die Bestellung innerhalb von 5 Minuten nicht erhält, wird die Bestellung abgebrochen Es wird eine SMS-Erinnerung gesendet ... Für Szenarien mit langen Verzögerungen und geringer Echtzeitleistung können wir die Aufgabenplanung verwenden, um eine regelmäßige Abfrageverarbeitung durchzuführen. Zum Beispiel: xxl-job Heute werden wir auswählen

So implementieren Sie verteilte Sperren mit Redis in SpringBoot So implementieren Sie verteilte Sperren mit Redis in SpringBoot Jun 03, 2023 am 08:16 AM

1. Redis implementiert das Prinzip der verteilten Sperren und warum verteilte Sperren erforderlich sind. Bevor über verteilte Sperren gesprochen wird, muss erläutert werden, warum verteilte Sperren erforderlich sind. Das Gegenteil von verteilten Sperren sind eigenständige Sperren. Wenn wir Multithread-Programme schreiben, vermeiden wir Datenprobleme, die durch den gleichzeitigen Betrieb einer gemeinsam genutzten Variablen verursacht werden. Normalerweise verwenden wir eine Sperre, um die Richtigkeit der gemeinsam genutzten Variablen sicherzustellen Die gemeinsam genutzten Variablen liegen im gleichen Prozess. Wenn es mehrere Prozesse gibt, die gleichzeitig eine gemeinsam genutzte Ressource betreiben müssen, wie können sie sich dann gegenseitig ausschließen? Heutige Geschäftsanwendungen sind in der Regel Microservice-Architekturen, was auch bedeutet, dass eine Anwendung mehrere Prozesse bereitstellen muss. Wenn mehrere Prozesse dieselbe Datensatzzeile in MySQL ändern müssen, ist eine Verteilung erforderlich, um fehlerhafte Daten zu vermeiden wird zu diesem Zeitpunkt eingeführt. Der Stil ist gesperrt. Punkte erreichen wollen

So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann Jun 03, 2023 pm 04:38 PM

Springboot liest die Datei, kann aber nach dem Packen in ein JAR-Paket nicht auf die neueste Entwicklung zugreifen. Es gibt eine Situation, in der Springboot die Datei nach dem Packen in ein JAR-Paket nicht lesen kann ist ungültig und kann nur über den Stream gelesen werden. Die Datei befindet sich unter resources publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Dec 29, 2023 am 11:02 AM

SpringBoot und SpringMVC sind beide häufig verwendete Frameworks in der Java-Entwicklung, es gibt jedoch einige offensichtliche Unterschiede zwischen ihnen. In diesem Artikel werden die Funktionen und Verwendungsmöglichkeiten dieser beiden Frameworks untersucht und ihre Unterschiede verglichen. Lassen Sie uns zunächst etwas über SpringBoot lernen. SpringBoot wurde vom Pivotal-Team entwickelt, um die Erstellung und Bereitstellung von Anwendungen auf Basis des Spring-Frameworks zu vereinfachen. Es bietet eine schnelle und einfache Möglichkeit, eigenständige, ausführbare Dateien zu erstellen

So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden Jun 02, 2023 am 11:07 AM

Wenn Springboot + Mybatis-plus keine SQL-Anweisungen zum Hinzufügen mehrerer Tabellen verwendet, werden die Probleme, auf die ich gestoßen bin, durch die Simulation des Denkens in der Testumgebung zerlegt: Erstellen Sie ein BrandDTO-Objekt mit Parametern, um die Übergabe von Parametern an den Hintergrund zu simulieren dass es äußerst schwierig ist, Multi-Table-Operationen in Mybatis-plus durchzuführen. Wenn Sie keine Tools wie Mybatis-plus-join verwenden, können Sie nur die entsprechende Mapper.xml-Datei konfigurieren und die stinkende und lange ResultMap konfigurieren Schreiben Sie die entsprechende SQL-Anweisung. Obwohl diese Methode umständlich erscheint, ist sie äußerst flexibel und ermöglicht es uns

Wie SpringBoot Redis anpasst, um die Cache-Serialisierung zu implementieren Wie SpringBoot Redis anpasst, um die Cache-Serialisierung zu implementieren Jun 03, 2023 am 11:32 AM

1. Passen Sie den RedisTemplate1.1-Standard-Serialisierungsmechanismus an. Die API-basierte Redis-Cache-Implementierung verwendet die RedisTemplate-Vorlage für Daten-Caching-Vorgänge. Öffnen Sie hier die RedisTemplate-Klasse und zeigen Sie die Quellcodeinformationen der Klasse publicclassRedisTemplateextendsRedisAccessorimplementsRedisOperations an. Schlüssel deklarieren, verschiedene Serialisierungsmethoden des Werts, der Anfangswert ist leer @NullableprivateRedisSe

So erhalten Sie den Wert in application.yml in Springboot So erhalten Sie den Wert in application.yml in Springboot Jun 03, 2023 pm 06:43 PM

In Projekten werden häufig einige Konfigurationsinformationen benötigt. Diese Informationen können in der Testumgebung und in der Produktionsumgebung unterschiedliche Konfigurationen haben und müssen möglicherweise später basierend auf den tatsächlichen Geschäftsbedingungen geändert werden. Wir können diese Konfigurationen nicht fest im Code codieren. Am besten schreiben Sie sie in die Konfigurationsdatei. Sie können diese Informationen beispielsweise in die Datei application.yml schreiben. Wie erhält oder verwendet man diese Adresse im Code? Es gibt 2 Methoden. Methode 1: Wir können den Wert, der dem Schlüssel in der Konfigurationsdatei (application.yml) entspricht, über den mit @Value versehenen Wert erhalten. Diese Methode eignet sich für Situationen, in denen es relativ wenige Mikrodienste gibt: Tatsächlich Projekte, wenn das Geschäft kompliziert ist, Logik

See all articles