前述したように、application.properties ファイルは設定されていません。ここで、main/resources フォルダーの下に新しい application.properties ファイルを作成します。次の構成を記述します。
次に、プロジェクトを開始します。
OK、起動結果のスクリーンショットをご覧ください。上では、ポート「9090」でサービスが開始されていることがわかります。次に、このディレクトリに application.yml ファイルを設定すると、
起動結果は次のようになります。
サービスがまだポート「9090」で開始されていることがわかります。このため、次の結論を導き出します。同じフォルダー内に application.properties と application.yml という 2 つのファイルがある場合、application.properties ファイルが application.yml ファイルを上書きし、application.properties ファイルが有効になります。
yml ファイルとは
yml は、非常に直観的なデータシリアル化方法である YAML (YAML Aint Markup Language) で記述されたファイル形式です。これは、非常に簡単に言えば、XML ファイルやプロパティ ファイルに似た新しいファイル形式です。
このタイトルを見た友人は間違いなく、「application.properties は他のパスに置くことができますか?」と言うでしょう? はい、その通りだと思います。 。 application.properties/.yml を main/resources フォルダーに置きます。プロジェクトの実行中、このフォルダー内のファイルはクラス フォルダーにコピーされるため、このパスはクラスパスとも呼ばれます。
springboot ソース コードで "application.properties" を検索し、ConfigFileApplicationListener のようなクラスを見つけます。このクラスのコメントに次の段落があります。
* {@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>
これは通常、「EnvironmentPostProcessor がパスする」ことを意味します既知のファイル パスからプロパティをロードして、コンテキストを構成します。デフォルトのプロパティは、application.properties/application.yml ファイルから取得されます。これらのファイルは、次のパス「,
file:./config/ ルート フォルダー」から取得されます。 (ルートファイルフォルダー (プロジェクトフォルダー) 下のプロジェクトファイル config ディレクトリ
file:./config/{@literal *}/ config/*/ ルートファイルフォルダー (プロジェクトフォルダー) 下のディレクトリ
file:./ ルート ファイル フォルダー (プロジェクト フォルダー) の下
classpath:config/ config/
classpath under classpath: under classpath
わかりました。 application.properties/application.yml ファイルは上記の場所からロードされ、構成した main/resources は実際には上記の classpath: であるため、上記のパスも適切ですか? ConfigFileApplicationListener クラスに沿って読み続けてください。
// 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/";
DEFAULT_SEARCH_LOCATIONS が上記の値を指定していることがわかります。上記のコメントは非常に興味深いものですが、うまく翻訳できませんでした。例を通して確認してみましょう。 application.properties と application.yml の優先順位がわかったので、application.properties ファイルを使用してそれを確認するだけです。resources/config (実行パス: classpath:/config/) の下に application.properties があります。
#どのポートが現在使用されているかを確認します。 は 9092 を使用しています。これは、リソース/構成の優先順位が大きいことを意味します。リソースよりも、つまり classpath:/config/>classpath:/ です。ファイルを見てみましょう:/ application.properties ファイルはプロジェクトのルート パスの下に作成されます。開始サーバー ポートは 9093 です。どのポートであるかを見てみましょう。 サービスは 9093 を使用し、優先順位は file:/>classpath:/config/>classpath:/ です。ここで、config/my/ パスをプロジェクト パスに追加し、application.properties ファイルを追加します。テスト結果は次のとおりです。
#サービスはポート「9094」で開始され、優先度が file:./config/*/>file:./>classpath:/>classpath:/config/ であることを示し、最後の検証ポイントはfile:/config、これは検証する必要はなく、最も高い優先順位が必要だと思います。したがって、優先順位は高いものから低いものまで、 file:./config/ > file:./config/*/ > となります。 file:./ > classpath:/ > classpath:/config/、平たく言えば、プロジェクト ルート パスの下の config>config/*/ プロジェクト ルート パスの下>プロジェクト ルート パス>classpath:/config>classpath:/
以上がspringboot のデフォルトの読み込みパスは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。