Heim  >  Artikel  >  Java  >  Was sind die Standardladepfade von Springboot?

Was sind die Standardladepfade von Springboot?

王林
王林nach vorne
2023-05-15 22:16:041157Durchsuche

1. Erste Einführung in die Datei application.properties/.yml

Wie bereits erwähnt, ist die Datei application.properties nicht konfiguriert. Jetzt erstelle ich eine neue Datei application.properties im Ordner main/resources und schreibe die folgende Konfiguration

Was sind die Standardladepfade von Springboot?

Dann starten Sie das Projekt,

Was sind die Standardladepfade von Springboot?

Okay, auf dem Screenshot des Startergebnisses oben können Sie sehen, dass der Dienst auf Port „9090“ gestartet wird. Wenn Sie dann eine application.yml-Datei in diesem Verzeichnis konfigurieren, sehen Sie, dass der Dienst weiterhin auf Port „9090“ gestartet ist. Aus diesem Grund ziehen wir folgende Schlussfolgerung: Wenn sich zwei Dateien application.properties und application.yml im selben Ordner befinden, überschreibt die Datei application.properties die Datei application.yml und die Datei application.properties wird wirksam.

Was ist eine YML-Datei?

Was sind die Standardladepfade von Springboot?Yml ist ein von YAML (YAML Aint Markup Language) geschriebenes Dateiformat, das eine sehr intuitive Möglichkeit zur Serialisierung von Daten darstellt. Es handelt sich ganz einfach um ein neues Dateiformat, ähnlich wie XML und Eigenschaftendateien.

2. Kann sich die Datei application.properties/.yml in anderen Pfaden befinden?

Freunde, die diesen Titel gesehen haben, werden sich sicherlich fragen, ob sich application.properties in anderen Pfaden befinden könnte. Wir legen application.properties/.yml im Ordner main/resources ab. Wenn das Projekt ausgeführt wird, werden die Dateien in diesem Ordner in den Klassenordner kopiert, daher wird dieser Pfad auch als Klassenpfad bezeichnet. Was sind die Standardladepfade von Springboot?

Suchen Sie im Springboot-Quellcode nach „application.properties“ und finden Sie eine Klasse wie ConfigFileApplicationListener. In den Kommentaren dieser Klasse gibt es den folgenden Absatz:

* {@link EnvironmentPostProcessor} that configures the context environment by loading
 * properties from well known file locations. By default properties will be loaded from
 * 'application.properties' and/or 'application.yml' files in the following locations:
 * <ul>
 * <li>file:./config/</li>
 * <li>file:./config/{@literal *}/</li>
 * <li>file:./</li>
 * <li>classpath:config/</li>
 * <li>classpath:</li>
 * </ul>

Es bedeutet ungefähr „EnvironmentPostProcessor lädt Eigenschaften aus bekannten Dateipfaden.“ Konfigurieren Sie die Kontextumgebung. Die Standardeigenschaften stammen aus der Datei application.properties/application.yml. Diese Dateien stammen aus dem Konfigurationsverzeichnis

file:./ im Stammordner (Projektordner) des folgenden Pfads:

file :./config/ config/{@literal *}/ config/*/ Verzeichnis unter dem Stammdateiordner (Projektordner)

file:./

classpath:config/ config unter Klassenpfad unter dem Stammdateiordner (Projektordner). ) /

Klassenpfad: Unter Klassenpfad

Okay, wir wissen bereits, dass die Datei application.properties/application.yml von den oben genannten Speicherorten geladen wird und die Haupt-/Ressourcen, die wir konfiguriert haben, tatsächlich der obige Klassenpfad sind: und dann die oben genannten Haben diese Pfade auch eine Reihenfolge? Schauen Sie sich die ConfigFileApplicationListener-Klasse weiter an und sehen Sie ein Attribut wie das folgende:

// Note the order is from least to most specific (last one wins)
private static final String DEFAULT_SEARCH_LOCATIONS = "classpath:/,classpath:/config/,file:./,file:./config/*/,file:./config/";

Sie können sehen, dass dieses DEFAULT_SEARCH_LOCATIONS die oben genannten Werte angibt, aber ich habe es nicht getan. Lassen Sie es uns anhand von Beispielen überprüfen. Da wir nun die Prioritäten von application.properties und application.yml kennen, können wir sie einfach anhand der Datei application.properties überprüfen. Unter resources/config (Laufpfad: classpath:/config/) befindet sich

Schauen Sie sich an, welcher Port gerade verwendet wird.

verwendet 9092, was bedeutet, dass resources/config eine höhere Priorität hat als resources, also classpath:/config/>classpath:/. Werfen wir einen Blick auf file:/

Was sind die Standardladepfade von Springboot?

. Wir haben eine neue application.properties-Datei im Stammpfad des Projekts erstellt. Schauen wir uns an, welchen Port der Dienst verwendet 9093. , die Priorität ist: file:/>classpath:/config/>classpath:/. Jetzt füge ich den Pfad config/my/ zum Projektpfad hinzu und füge die Datei application.properties hinzu

Was sind die Standardladepfade von Springboot?

Die Testergebnisse sind wie folgt:

Was sind die Standardladepfade von Springboot?

Der Dienst wird auf Port „9094“ gestartet, was darauf hinweist, dass die Priorität lautet: file:./config/*/>file:./>classpath:/>classpath:/config/ und der letzte Überprüfungspunkt ist file:/config, ich denke, dies muss nicht überprüft werden und muss die höchste Priorität haben: file:./config/ > file:./ > classpath:/ > classpath:/config/, für Laien: config unter dem Projekt-Root-Pfad>config/*/ unter dem Projekt-Root-Pfad>Project-Root-Pfad>classpath:/config>classpath:/

Das obige ist der detaillierte Inhalt vonWas sind die Standardladepfade von Springboot?. 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