JARパッケージはjarパッケージの内部構成ファイルと外部構成ファイルを読み取り、springbootが外部構成ファイル(優先構成)を読み取る方法

jarパッケージは、jarパッケージの内部構成ファイルと外部構成ファイルを読み取り、springbootが外部構成ファイルを読み取る方法 

システムプロパティSystem.getProperty( "user.dir")を使用して、コマンドが実行されるディレクトリを取得します(インターネット上の多くは、jarパッケージの現在のディレクトリが間違っていると言っています

ソースコードの例:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class TestConfigPath {

    public static void main(String[] args) {
        String path = System.getProperty("user.dir");
        System.out.println(path);
        Properties properties = TestConfigPath.getProperties("application.properties");
        String activemqConnection = properties.getProperty("activemq.connection");
        System.out.println(activemqConnection);
    }

    public static Properties getProperties(String fileName) {
        try {
            String outpath = System.getProperty("user.dir")+File.separator+"config"+File.separator;//先读取config目录的,没有再加载classpath的
            System.out.println(outpath);
            Properties properties = new Properties();
            InputStream in = new FileInputStream(new File(outpath + fileName));
            properties.load(in);
            return properties;
        } catch (IOException e) {
            System.out.println(e.getMessage());
            try {
                Properties properties = new Properties();
                InputStream in = TestConfigPath.class.getClassLoader().getResourceAsStream(fileName);//默认加载classpath的
                properties.load(in);
                return properties;
            } catch (IOException es) {
                System.out.println(es.getMessage());
                return null;
            }
        }
    }
}

注:dockerで実行し、configディレクトリをjarと同じディレクトリに配置すると、それを読み取ることができません。Dockerfileに文を追加する必要があります:ADD config / / config /

次に、読み込まれるパスは//config/application.propertiesです。

 

/config/application.properties
/config/application.properties(そのようなファイルやディレクトリはありません)

 

docker configの構成ファイルはjarパッケージよりも優先度が高く、jarパッケージのデフォルト構成をオーバーライドします。他のサーバー環境にデプロイする場合は、対応する構成を変更するだけで
済みます。Dockerfile構成を追加する必要があります:ADD config / / config /

 

springbootが外部構成ファイルを読み取る方法には、次の優先順位があります。1つ
目は、コマンドが実行されるディレクトリの下にconfigフォルダーを作成することです。(jarパッケージと同じディレクトリーにconfigフォルダーを作成し、jarパッケージディレクトリーでコマンドを実行します)、次にこのフォルダーに構成ファイルを配置します。
2つ目は、構成ファイルをjarパッケージの同じレベルのディレクトリに直接配置することです。
3つ目は、クラスパスの下にconfigフォルダーを作成し、そこに構成ファイルを配置することです。
4番目は、構成ファイルをクラスパスの直下に置くことです。
デフォルトでは、springbootは最初に、同じレベルの独自のディレクトリにあるconfig / application.propertiesファイルを読み取ります。
src / main / resourcesフォルダーの下に作成されたapplication.propertiesファイルの優先度が最も低い

したがって、springbootが外部構成ファイルの読み取りを開始するとき、構成ファイルのレイヤーを追加するだけで、コードを変更せずにデフォルトのファイルをオーバーライドできます。

 

 

 

 

おすすめ

転載: blog.csdn.net/bj_chengrong/article/details/103185706