Heim >Java >javaLernprogramm >Was sind die Standardladepfade von Springboot?
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
Dann starten Sie das Projekt, 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?
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.
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:/ . 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 Die Testergebnisse sind wie folgt: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!