Heim  >  Artikel  >  Java  >  Wie lädt SpringBoot mehrere Konfigurationsdateien, um zwischen Entwicklungs- und Produktumgebungen zu wechseln?

Wie lädt SpringBoot mehrere Konfigurationsdateien, um zwischen Entwicklungs- und Produktumgebungen zu wechseln?

王林
王林nach vorne
2023-05-12 23:58:161779Durchsuche

1. Multi-Environment-Switching ist in SpringBoot implementiert

In SpringBoot müssen die Dateinamen anderer von uns erstellter Konfigurationsdateien zusätzlich zu application.properties dem Format application-{profile}.properties entsprechen. code>, wobei {profile} Ihrer Umgebungskennung entspricht (nicht unbedingt eine .properties-Datei, es kann auch .yml sein) und der entsprechende {profile}-Wert angepasst wird Vom Entwickler (z. B. Entwickler, Produkt) müssen Sie beim Starten des Projekts nur die entsprechenden Parameter hinzufügen, und Springboot liest die Konfigurationsdatei. Die spezifische Profilkonfiguration wird in der Datei application.properties über die Eigenschaft spring.profiles.active festgelegt. Als nächstes veranschaulichen wir es anhand eines Beispielsapplication-{profile}.properties的格式,其中{profile}对应你的环境标识(不一定是.properties文件,也可以是.yml)其对应的{profile}值是开发者自定义的(如dev,product),在项目启动的时候,只需要添加对应的参数,springboot就会去读取该配置文件了。具体profile的配置在application.properties文件中通过spring.profiles.active属性来设置。接下来我们以一个例子来说明

(1)首先这里创建了dev、product、qa、stage和默认的application五个配置文件

Wie lädt SpringBoot mehrere Konfigurationsdateien, um zwischen Entwicklungs- und Produktumgebungen zu wechseln?

(2)加载配置文件时会先加载application.properties配置文件(这里一般存放一些公共配置),在该文件中配置要加载的环境的配置文件,这里有两种配置方法。

例如要加载dev环境,可以在application.properties中这样配置

spring.profiles.active=dev

或者使用@spring.profiles.active@,如下所示

spring.profiles.active=@spring.profiles.active@

如果使用这种方式则需要在pom.xml中添加以下内容,其中activeByDefault标签来指定项目启动时默认加载的配置文件。

<profiles>
  <profile>
    <id>dev</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
      <spring.profiles.active>dev</spring.profiles.active>
    </properties>
  </profile>
  <profile>
    <id>qa</id>
    <properties>
      <spring.profiles.active>qa</spring.profiles.active>
    </properties>
  </profile>
  <profile>
    <id>stage</id>
    <properties>
      <spring.profiles.active>stage</spring.profiles.active>
    </properties>
  </profile>
  <profile>
    <id>product</id>
    <properties>
      <spring.profiles.active>product</spring.profiles.active>
    </properties>
  </profile>
</profiles>

当执行mvn clean package -P dev 命令对项目进行打包发布时,打出来的jar/war包中的配置文件中@spring.profiles.active@ 会被替换成 dev。

注意@spring.profiles.active@ 要与pom中的标签 <spring.profiles.active></spring.profiles.active>> 保持一致,否则会报错。

Wie lädt SpringBoot mehrere Konfigurationsdateien, um zwischen Entwicklungs- und Produktumgebungen zu wechseln?

2.SpringBoot中配置文件加载顺序

配置文件的优先级排序(以哪个配置文件为准):

1、项目根目录下的config目录。【优先级最高】
2、项目根目录。
3、classpath下的config目录。
4、classpath目录(新建项目时application.properties默认所在位置)。【优先级最低】

配置文件加载顺序和优先级顺序相反,优先级低的先加载,因为如果有重复的配置,先加载的配置文件会被覆盖。

同一级目录下,如果是application.yml,application.properties

(1) Zunächst werden hier fünf Konfigurationsdateien für Entwickler, Produkt, QA, Stufe und Standardanwendung erstellt

Wie lädt SpringBoot mehrere Konfigurationsdateien, um zwischen Entwicklungs- und Produktumgebungen zu wechseln?Wie lädt SpringBoot mehrere Konfigurationsdateien, um zwischen Entwicklungs- und Produktumgebungen zu wechseln

(2) Beim Laden der Konfigurationsdatei die Konfigurationsdatei application.properties wird zuerst geladen (Einige öffentliche Konfigurationen werden im Allgemeinen hier gespeichert. Konfigurieren Sie die Konfigurationsdatei der Umgebung, die in diese Datei geladen werden soll. Es gibt zwei Konfigurationsmethoden.

Um beispielsweise die Entwicklungsumgebung zu laden, können Sie sie wie folgt in application.properties konfigurieren

rrreee🎜oder @spring.profiles.active@ verwenden, wie unten gezeigt🎜rrreee🎜Wenn Sie diese Methode verwenden, müssen Sie hinzufügen Fügen Sie den folgenden Inhalt zu pom.xml hinzu, wobei das Tag activeByDefault die Konfigurationsdatei angibt, die beim Start des Projekts standardmäßig geladen wird. 🎜rrreee🎜Wenn Sie den Befehl mvn clean package -P dev ausführen, um das Projekt zu verpacken und freizugeben, wird @spring.profiles.active@ in der Konfigurationsdatei im jar/war-Paket durch dev ersetzt. 🎜
🎜Beachten Sie, dass @spring.profiles.active@ mit dem Tag <spring.profiles.active></spring.profiles.active>> im POM übereinstimmen muss, andernfalls ein Fehler wird gemeldet. 🎜
🎜Wie lädt SpringBoot mehrere Konfigurationsdateien, um mehrere Entwickler zu erreichen? Produktfunktionen? Umgebungswechsel“ />🎜🎜2. Reihenfolge beim Laden der Konfigurationsdateien in SpringBoot🎜🎜<strong>Prioritätssortierung der Konfigurationsdateien</strong> (welche Konfigurationsdatei soll Vorrang haben): 🎜🎜1. Das Konfigurationsverzeichnis unter dem Projekt Stammverzeichnis. [Höchste Priorität]<br/>2. Projektstammverzeichnis. <br/>3. Das Konfigurationsverzeichnis unter dem Klassenpfad. <br/>4. Classpath-Verzeichnis (der Standardspeicherort von application.properties beim Erstellen eines neuen Projekts). [Niedrigste Priorität]🎜🎜Die Ladereihenfolge der Konfigurationsdateien ist entgegengesetzt zur Prioritätsreihenfolge. Die Datei mit der niedrigeren Priorität wird zuerst geladen, da bei doppelten Konfigurationen die zuerst geladene Konfigurationsdatei überschrieben wird. 🎜🎜Wenn im Verzeichnis derselben Ebene die Konfigurationsdateien <code>application.yml</code> und <code>application.properties</code> gleichzeitig vorhanden sind, hat die Konfigurationsdatei application.properties Vorrang, d. h dass es zuerst geladen wird. Die .properties-Datei wird nach der .yml-Datei geladen. 🎜🎜🎜🎜🎜Prioritätsreihenfolge: 1->2->3->4->5. 🎜🎜Reihenfolge beim Laden der Dateien: 5->4->3->2->1. 🎜

Das obige ist der detaillierte Inhalt vonWie lädt SpringBoot mehrere Konfigurationsdateien, um zwischen Entwicklungs- und Produktumgebungen zu wechseln?. 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