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에서 실행하고 jar와 동일한 디렉토리에 config 디렉토리를 넣으면 읽을 수 없습니다. Dockerfile에 ADD config / / config / 문장을 추가해야합니다.

읽은 경로는 //config/application.properties입니다.

 

/config/application.properties
/config/application.properties (해당 파일 또는 디렉토리 없음)

 

docker 구성의 구성 파일은 jar 패키지보다 우선 순위가 높으며 jar 패키지의 기본 구성을 재정의합니다. 다른 서버 환경에 배포 할 때 해당 구성 만 수정하면됩니다.
Dockerfile 구성은 다음을 추가해야합니다. ADD config / / config /

 

springboot가 외부 구성 파일을 읽는 방법은 다음과 같은 우선 순위가 있습니다. 첫
번째는 명령이 실행되는 디렉토리 아래에 구성 폴더를 만드는 것입니다. (jar 패키지와 동일한 디렉토리에 config 폴더를 생성하고 jar 패키지 디렉토리에서 명령을 실행합니다.)이 폴더에 구성 파일을 넣습니다.
두 번째는 구성 파일을 jar 패키지의 동일한 레벨 디렉토리에 직접 배치하는 것입니다.
세 번째는 클래스 경로 아래에 구성 폴더를 만든 다음 구성 파일을 여기에 넣는 것입니다.
네 번째는 구성 파일을 클래스 경로 바로 아래에 배치하는 것입니다.
기본적으로 springboot는 먼저 동일한 수준의 자체 디렉토리에서 config / application.properties 파일을 읽습니다.
src / main / resources 폴더에 생성 된 application.properties 파일의 우선 순위가 가장 낮습니다.

따라서 springboot가 외부 구성 파일을 읽기 시작하면 코드를 수정하지 않고 기본 구성 파일을 재정의하기 위해 구성 파일 계층 만 추가하면됩니다.

 

 

 

 

추천

출처blog.csdn.net/bj_chengrong/article/details/103185706