Spring Boot 설정 로드 순서 및 속성 로드 순서

4782 단어 springboot
먼저 spring boot 설정 로 딩 순 서 를 소개 합 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
Spring Boot 를 사용 하면 개발,테스트,온라인 등 다양한 설정 과 관련 됩 니 다.Spring Boot 는 같은 코드 를 사용 하면 개발,테스트,온라인 환경 에서 서로 다른 설정 을 사용 할 수 있 도록 쉽게 도와 줄 수 있 습 니 다.
Spring Boot 에 서 는 다음 과 같은 몇 가지 방식 으로 설정 을 불 러 올 수 있 습 니 다.이 장의 내용 은 Spring Boot 2.0 을 바탕 으로 상세 하 게 설명 한다.
1.properties 파일;
2.YAML 파일;
3.시스템 환경 변수;
4.명령 행 인자;
잠깐 만...
우 리 는 Spring Beans 에서 이 프로필 에 불 러 온 값 을 직접 사용 할 수 있 습 니 다.예 를 들 어:
1.@Value 주 해 를 사용 하여 해당 하 는 값 을 직접 주입 하면 Spring 에서 Environment 의 값 을 얻 을 수 있 습 니 다.
2.@ConfigurationProperties 주 해 를 사용 하여 해당 하 는 값 을 대상 에 연결 합 니 다.
3.주입 환경 을 직접 획득 하여 획득 하기;
속성 을 설정 하 는 방식 이 많 습 니 다.Spring boot 는 고유 한 Property Source 를 사용 하여 속성 을 쉽게 덮어 쓸 수 있 는 값 을 사용 합 니 다.
속성 불 러 오기 설정 순 서 는 다음 과 같 습 니 다.
1.개발 자 도구`Devtools`전역 설정 매개 변수;
2.단원 테스트 상의 `@TestProperty Source'가 지정 한 매개 변 수 를 주석 합 니 다.
3.단원 테스트 의 `@SpringBootTest`지정 한 매개 변 수 를 주석 합 니 다.
4.명령 행 에서 지정 한 인자,예 를 들 어'자바-jar springboot.jar--name='자바 기술 창고';
5.명령 행 의`SPRINGAPPLICATION_JSONJSON'지정 매개 변수,예 를 들 어'자바-Dspring.application.json='{'name':'자바 기술 창고'}'-jar springboot.jar'
6.`ServletConfig`매개 변 수 를 초기 화 합 니 다.
7.`ServletContext`매개 변 수 를 초기 화 합 니 다.
8.JNDI 인자(예 를 들 어`java:comp/env/spring.application.json`);
9.Java 시스템 매개 변수(출처:`System.getProperties()`);
10.운영 체제 환경 변수 파라미터;
11.`RandomValuePropertySource`의 임 의 수 는'ramdom.*'와 만 일치 합 니 다.
12.JAR 패키지 밖의 프로필 인자(`application-{profile}.properties(YAML)`)
13.JAR 가방 에 있 는 프로필 인자(`application-{profile}.properties(YAML)`)
14.JAR 패키지 밖의 프로필 인자(`application.properties(YAML)`)
15.JAR 패키지 의 설정 파일 인자(`application.properties(YAML)`)
16.`@Configuration`프로필 에 `@Property Source'로 딩 된 매개 변 수 를 설명 합 니 다.
17.기본 매개 변수('SpringApplication.setDefaultProperties'를 통 해 지정);
숫자 가 작은 우선 순위 가 높 을 수록 숫자 가 작은 것 은 숫자 가 큰 매개 변수 값 을 덮어 씁 니 다.우 리 는 실천 을 통 해 상기 설정 매개 변수의 로드 순 서 를 검증 합 니 다.
1.주 응용 프로그램 에 자바 시스템 인 자 를 추가 합 니 다.
?
1 2 3 4 5 6 @Bean public CommandLineRunner commandLineRunner() {    return (args) -> {      System.setProperty( "name" , "javastack-system-properties" );    }; }
2.application.properties 파일 에 속성 을 추가 합 니 다.
?
1 name = javastack-application
3.application-dev.properties 파일 에 속성 을 추가 합 니 다.
?
1 name = javastack-application-dev
4.테스트 클래스 추가
?
1 2 3 4 5 6 7 8 9 10 11 @RunWith (SpringRunner. class ) @SpringBootTest (value = { "name=javastack-test" , "sex=1" }) @ActiveProfiles ( "dev" ) public class SpringBootBestPracticeApplicationTests {    @Value ( "${name}" )    private String name;    @Test    public void test() {      System.out.println( "name is " + name);    } }
테스트 단위 테스트 실행,프로그램 출력:
?
1 name is javastack-test
상기 매개 변수의 동적 조정 에 따라 매개 변수 가 정확하게 덮어 쓸 수 있 음 을 발견 합 니 다.Spring Boot 의 각종 설정 의 로드 순 서 를 알 게 되 었 습 니 다.설정 이 덮어 지면 무슨 문제 인지 알 수 있 습 니 다.
다음은 springboot 속성 로드 순 서 를 보 겠 습 니 다.
우선 순 위 는 순서대로 높 은 것 에서 낮은 것 으로,숫자 가 작 을 수록 우선 순위 가 높다.
1.명령 줄 에 들 어 오 는 인자.자바-jar-Dspring.profiles.active 와 유사 합 니 다.2.SPRING_APPLICATION_JSON 속성,이 속성 은 JSON 형식 으로 시스템 환경 변수 에 저 장 됩 니 다.3.java:comp/env 의 JNDI 속성 입 니 다.4.자바 의 시스템 속성 은 System.getProperties()를 통 해 관련 내용 을 얻 을 수 있 습 니 다.5.운영 체제 의 환경 변수.6.random.*를 통 해 무 작위 속성 을 설정 합 니 다.7.현재 응용 jar 패키지 외 에{profile}환경 에 대한 설정 파일 내용 입 니 다.8.현재 응용 jar 패키지 에 있 으 며,서로 다른{profile}환경 에 대한 프로필 내용 입 니 다.9.현재 jar 패키지 밖 에 있 는 application.properties 또는 application.yml 설정 내용.10.현재 응용 jar 패키지 에 있 는 application.properties 또는 application.yml 설정 내용 입 니 다.11.@Configuration 주석 이 수 정 된 클래스 에서@PropertySource 주석 을 통 해 정 의 된 속성 을 설명 합 니 다.12.기본 속성 을 적용 하고 SpringApplication.setDefaultProperties 가 정의 하 는 속성 내용 을 사용 합 니 다.
주:자신 이 springboot 을 사용 하 는 것 을 발 견 했 을 때 사용 하 는 속성 과 자신 이 원 하 는 속성 값 이 차이 가 있 을 때 상기 로 딩 순서 에서 관련 속성 내용 을 봅 니 다.

좋은 웹페이지 즐겨찾기