


Wie realisiert SpringBoot den Konfigurationswechsel in verschiedenen Umgebungen über Profile?
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:
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:
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:
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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.

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

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

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

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

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

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

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
