Spring Boot 구성 로드 순서 및 속성 로드 순서 이해

먼저 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. Environment를 주입하여 직접 가져오기;
속성을 구성하는 방법은 매우 많은데, Spring boot은 고유한 PropertySource를 사용하여 속성의 값을 쉽게 덮어씁니다.
속성 로드를 구성하는 순서는 다음과 같습니다.
1. 개발자 도구`Devtools`글로벌 구성 매개 변수;
2. 단원 테스트의`@TestPropertySource `주해가 지정한 매개 변수;
3. 단원 테스트의`@SpringBootTest `주해가 지정한 매개 변수;
4. 명령줄에 지정된 매개 변수, 예를 들어'java-jarspringboot.jar--name="Java 기술 창고";
5, 명령줄의 `SPRING_APPLICATION_JSONJSON`은 `java-DSpring과 같은 매개 변수를 지정합니다.application.json='{'name':'자바 기술 창고'}'-jarspringboot.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 ` 프로필에 있습니다`@PropertySource `주석이 불러오는 매개 변수;
17. 기본 매개 변수(`Spring Application.setDefaultProperties`를 통해 지정);
숫자가 작은 우선순위가 높을수록 숫자가 작은 것은 숫자가 큰 매개 변수 값을 덮어씁니다. 상기 설정 매개 변수의 불러오는 순서를 검증합니다.
1. 주 응용 프로그램에 Java 시스템 매개변수를 추가합니다.

@Bean
public CommandLineRunner commandLineRunner() {
  return (args) -> {
    System.setProperty("name", "javastack-system-properties");
  };
}
2. 응용 프로그램에서.properties 파일에 속성을 추가합니다.

name = javastack-application
3. 응용 프로그램-dev.properties 파일에 속성을 추가합니다.

name = javastack-application-dev
4. 테스트 클래스 추가

@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);
  }
}
test 단위 테스트를 실행하고 프로그램 출력:

name is javastack-test
상기 매개 변수의 동적 조정에 따라 매개 변수가 정확하게 덮어쓰는 것을 발견할 수 있습니다.Spring Boot의 여러 구성에 대한 로드 순서를 파악했습니다. 구성이 덮어쓰면 무슨 문제인지 알 수 있습니다.
다음springboot 속성 로드 순서 보기
우선 순위는 순서대로 높음에서 낮음으로, 숫자가 작을수록 우선 순위가 높음
1. 명령줄에 전달된 매개변수.자바-jar-DSpring과 유사합니다.profiles.active 같은 거.
2.SPRING_APPLICATION_시스템 환경 변수에 JSON 형식으로 저장되는 JSON 속성입니다.
3.java:comp/env의 JNDI 속성입니다.
4.Java의 시스템 속성은 System을 통해 사용할 수 있습니다.getProperties () 에서 관련 내용을 얻을 수 있습니다.
5. 운영 체제의 환경 변수.
6. random.*설정된 랜덤 속성입니다.
7. 현재 응용 프로그램jar 패키지 밖에 위치하고 서로 다른 {profile} 환경에 대한 프로필 내용입니다.
8. 현재 응용 프로그램jar 패키지에 위치하고 서로 다른 {profile} 환경에 대한 프로필 내용입니다.
9. 현재 응용jar 패키지 밖에 있는 응용 프로그램입니다.속성 또는 응용 프로그램.yml 설정 내용.
10. 현재 응용jar 패키지에 있는 응용 프로그램입니다.속성 또는 응용 프로그램.yml 설정 내용.
11. @Configuration 메모가 수정된 클래스에서 @PropertySource 메모를 통해 정의된 속성입니다.
12. 기본 속성을 적용하고 SpringApplication을 사용합니다.setDefaultProperties가 정의하는 속성 컨텐트입니다.
주:springboot을 사용할 때 사용하는 속성과 원하는 속성 값이 다르다는 것을 발견하면 상기 불러오는 순서에서 관련 속성 내용을 보십시오.
총결산
위에서 말한 것은 편집자가 여러분께 소개한 Spring Boot 설정 불러오는 순서와 속성 불러오는 순서입니다. 여러분께 도움이 되었으면 합니다. 궁금한 점이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 답장을 드리겠습니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기