programing

Spring Cloud Config의 속성 로드 우선 순위는 무엇입니까?

closeapi 2023. 6. 20. 21:37
반응형

Spring Cloud Config의 속성 로드 우선 순위는 무엇입니까?

Spring은 외부화된 구성을 로드하는 명시적인 순서를 가지고 있습니다.

  1. 홈 디렉토리의 Devtools 글로벌 설정 속성(devtools가 활성화된 경우 ~/.spring-boot-devtools.properties).
  2. @TestProperty테스트에 대한 원본 주석.
  3. @스프링 부츠테스트에서 test#properties 주석 속성을 테스트합니다.
  4. 명령줄 인수입니다.
  5. SPRING_APPLICATION_JSON의 속성(인라인 JSON은 환경 변수 또는 시스템 속성에 포함됨).
  6. ServletConfig init 매개 변수입니다.
  7. ServletContext in 매개 변수입니다.
  8. java:comp/env의 JNDI 특성입니다.
  9. Java 시스템 속성(System.getProperties()).
  10. OS 환경 변수.
  11. 속성이 랜덤으로만 있는 랜덤 값 속성 소스입니다.*.
  12. 패키지 병 외부의 프로파일별 애플리케이션 속성(application-{profile} 속성 및 YAML 변형).
  13. 병 내부에 패키지된 프로필별 응용 프로그램 속성(application-{profile} 속성 및 YAML 변형).
  14. 패키지 병 외부의 응용 프로그램 속성(application.properties 및 YAML 변형).
  15. 병 내부에 패키지화된 애플리케이션 속성(application.properties 및 YAML 변형).
  16. @Property@Configuration 클래스에 대한 주석 원본.
  17. 기본 속성(SpringApplication을 설정하여 지정).setDefaultProperties)를 선택합니다.

그러나 Spring Cloud Config에서 제공되는 구성에는 명백한 누락이 있는 것 같습니다.위의 Spring Cloud 구성이 어디에 적합한지 아는 사람이 있습니까?

다른 사람들이 말했듯이, config-server가 먼저입니다.구성 서버의 속성을 로컬 속성(즉, 로컬 속성)으로 재정의하려는 경우.application-local.yml), 그런 다음 config-server**에 다음 두 가지 속성을 추가해야 합니다.

spring.cloud.config.allowOverride=true
spring.cloud.config.overrideNone=true

설명서에 따라:

부트스트랩 컨텍스트에 의해 애플리케이션에 추가되는 속성 소스는 종종 "원격"(예: 구성 서버)이며, 기본적으로 로컬에서 재정의할 수 없습니다.응용 프로그램이 자체 시스템 속성 또는 구성 파일로 원격 속성을 재정의하도록 허용하려면 원격 속성 소스에서 spring.cloud.config를 설정하여 해당 속성에 대한 사용 권한을 부여해야 합니다.allowOverride=true(로컬로 설정할 수 없음).이 플래그가 설정되면 시스템 속성 및 응용 프로그램의 로컬 구성과 관련하여 원격 속성의 위치를 제어하는 몇 가지 세부 설정이 있습니다. spring.cloud.config.overrideNone=true는 로컬 속성 소스로 재정의하고 spring.cloud.config는 로컬 속성 소스로 재정의합니다.로컬 구성 파일이 아닌 시스템 속성 및 환경 변수만 원격 설정을 재정의해야 하는 경우 시스템 속성=false를 재정의합니다.

사용에 대해서도 이 항목을 참조하십시오.spring.cloud.config.override-system-properties=false시스템/명령줄 속성을 통해 재정의합니다.위에서 인용한 문서에 불일치 사항이 있어 인용문에서 삭제했습니다.

원격 구성 서버가 로컬 시스템 속성 또는 환경 속성이 아닌 로컬 속성 파일 원본을 재정의하도록 하려면 구성 서버에 다음을 추가합니다.

spring.cloud.config.allowOverride=true
spring.cloud.config.overrideNone=false
spring.cloud.config.overrideSystemProperties=false

이 경우에는overrideSystemProperties값이 무시됩니다.» org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration#insertPropertySources

참고: 위의 모든 내용은 Spring Boot 2.3.x에 적용됩니다. 버전 2.4.x에서는 대체 로드 우선 순위를 사용합니다.https://github.com/spring-cloud/spring-cloud-config/issues/1856 을 참조하십시오.

설명서에는 다음이 명시되어 있습니다.

부트스트랩 속성은 다음 예제와 같이 /env 끝점에 우선 순위가 높은 속성 소스로 표시됩니다.

그래서 그것은 #0 위치가 될 것입니다.

포인트 12와 14는 스프링 클라우드 구성을 다룹니다.

12.패키지 병 외부의 프로필별 응용 프로그램 속성(application-{profile} 속성 및 YAML 변형).

14.패키지 병 외부의 애플리케이션 속성(애플리케이션.속성 및 YAML 변형).

언급URL : https://stackoverflow.com/questions/51469916/what-is-the-loading-precedence-for-properties-from-spring-cloud-config

반응형