programing

스프링 부트에서는 application.yml 또는 bootstrap.yml에 속성을 두는 것과 어떤 차이가 있습니까?

goodsources 2022. 7. 31. 23:03
반응형

스프링 부트에서는 application.yml 또는 bootstrap.yml에 속성을 두는 것과 어떤 차이가 있습니까?

스프링 부트에서는 application.yml 또는 bootstrap.yml에 속성을 두는 것과 어떤 차이가 있습니까?logging.config의 경우 응용 프로그램은 다르게 동작합니다.

나는 방금 물었다.Spring Cloud제가 가지고 있는 정보를 공유해야겠다고 생각했어요

bootstrap.yml은 is먼 is is 、 is is 、 。application.yml.

일반적으로 다음 용도로 사용됩니다.

  • Server를 Spring Cloud Config Server를 지정해야 .spring.application.name ★★★★★★★★★★★★★★★★★」spring.cloud.config.server.git.uri에 inside inside inside bootstrap.yml
  • ★★★encryption/decryption 수집

말하면, 「 」입니다.bootstrap.yml 스프링에 됩니다.ApplicationContext 부모 ApplicationContext 읽다보다 먼저 읽습니다.application.yml.

bootstrap.yml ★★★★★★★★★★★★★★★★★」bootstrap.properties

이는 Spring Cloud를 사용하고 있으며 애플리케이션 구성이 원격 구성 서버(예: Spring Cloud Config Server)에 저장되어 있는 경우에만 사용/필요합니다.

매뉴얼에서 다음 항목을 참조하십시오.

Spring Cloud 애플리케이션은 메인 애플리케이션의 상위 컨텍스트인 "부트스트랩" 컨텍스트를 생성하여 작동합니다.외부 소스로부터의 설정 속성 로드 및 로컬 외부 설정 파일의 속성 복호화도 담당합니다.

에 주의:bootstrap.yml ★★★★★★★★★★★★★★★★★」bootstrap.properties 는 추가 설정(디폴트 등)을 포함할 수 있지만 일반적으로 부트스트랩 설정만 여기에 넣으면 됩니다.

일반적으로 다음 두 가지 속성이 있습니다.

  • spring.cloud.config.uri)
  • 프로그램('어플리케이션 이름')spring.application.name)

기동시에, Spring Cloud 는 애플리케이션의 이름을 사용해 설정 서버에 HTTP 콜을 발신해, 그 애플리케이션의 설정을 되돌립니다.

application.yml ★★★★★★★★★★★★★★★★★」application.properties

표준 어플리케이션 구성이 포함되어 있습니다.부트스트랩 프로세스 중에 취득한 설정은 여기서 정의한 설정을 덮어쓰기 때문에 일반적으로 기본 설정입니다.

이 답변은 Munish Shandel, 버전 1.30, 25.03.2018의 "Java 개발자를 위한 마이크로 서비스 인터뷰 질문(Spring Boot, Spring Cloud, Cloud Native Applications)"이라는 책에서 매우 아름답게 설명되어 있습니다.

다음 내용은 이 책에서 인용되었으며, 이 답변에 대한 총 공적은 이 책의 저자에게 돌아옵니다.샨델

application.yml

application.yml/application.properties 파일은 Spring Boot 응용 프로그램에 고유합니다.응용 프로그램의 외부 속성 위치를 변경하지 않는 한 스프링 부트는 항상 다음 위치에서 application.yml을 로드합니다.

/src/main/resources/application.yml

애플리케이션의 모든 외부 속성을 이 파일에 저장할 수 있습니다.Spring Boot 프로젝트에서 사용할 수 있는 일반적인 속성은 https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html 에서 찾을 수 있습니다.이러한 속성은, 애플리케이션의 요구에 따라서 커스터마이즈 할 수 있습니다.샘플 파일은 다음과 같습니다.

spring:
    application:
        name: foobar
    datasource:
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost/test
server:
    port: 9000

부트스트랩.yml

한편 bootstrap.ymlspring-cloud-config에 고유하며 application.yml보다 먼저 로드됩니다.

bootstrap.yml은 Spring Cloud를 사용하고 있으며 마이크로 서비스 구성이 원격 Spring Cloud Config Server에 저장되어 있는 경우에만 필요합니다.

bootstrap.yml에 관한 주의사항

  1. Spring Cloud Config 서버와 함께 사용할 경우 아래 속성을 사용하여 application-name 및 config git 위치를 지정해야 합니다.

spring.application.name: "application-name"spring.cloud.config.server.usri: "spring-uri-config"
  1. 마이크로 서비스(클라우드 구성 서버 제외)에서 사용하는 경우 아래 속성을 사용하여 구성 서버의 응용 프로그램 이름과 위치를 지정해야 합니다.

spring.application.name:spring.cloud.config.uri:
  1. 이 속성 파일에는 스프링 클라우드 환경과 관련된 기타 구성(예: eureka 서버 위치, 암호화/복호화 관련 속성)을 포함할 수 있습니다.

시작 시 Spring Cloud는 응용 프로그램 이름을 사용하여 Spring Cloud Config Server에 HTTP(S)를 호출하고 해당 응용 프로그램의 구성을 다시 검색합니다.

application.yml에는 마이크로 서비스의 기본 설정이 포함되어 있으며 부트스트랩 프로세스 중에 (클라우드 구성 서버에서) 취득된 설정은 application.yml에서 정의된 설정을 덮어씁니다.

이 점에 대해 이미 존재하는 해답에 전적으로 동의합니다.

  • bootstrap.yml는 리모트 설정의 위치를 나타내는 파라미터를 저장하기 위해 사용되며 이러한 리모트Configuration을 사용하여 부트스트랩어플리케이션 컨텍스트가 작성됩니다.

실제로, 그것은 또한 일반적인 속성을 저장할 수 있습니다.application.yml하지만 이 까다로운 것에 주의하세요.

  • 을 성성에 배치하는 bootstrap.ymlapplication.yml을 포함한 거의 모든 속성 소스보다 우선순위가 낮습니다.여기에 기술된 바와 같이.

확실히 해두죠, 두 가지 종류의 속성이 있습니다.bootstrap.yml:

  • 부트스트랩 단계 중에 로드되는 속성입니다.우리는을 사용한다bootstrap.yml(는 파일 시스템, git 보고 또는 다른 무언가), 이러한 방법으로 우리는 그 속성 높은 순위로 지역 구성을 통해 재정의할 수 없는 재산 보유자 찾기 위해서.이처럼 설명한다.
  • 에 있특성.bootstrap.yml앞서 설명한 바와 같이 우선순위가 낮아집니다.디폴트 설정으로 사용하는 것이 좋을지도 모릅니다.

에 속성을 놓고 간의 차이 그래서.application.yml또는bootstrap.yml봄 부츠에 있어요:

  • 적재 구성 파일에 부트 스트랩 단계 특성에 관한 연구에만 배치할 수 있다.bootstrap.yml.
  • 속성에 대한 모든 다른 종류에 대해 말하자면, 그것들을 배치한다.application.yml더 높은 우선 순위를 가져올 거다.

내 2Cents 여기..

Bootstrap.yml 또는 Bootstrap.properties 봄은 클라우드 서버에서 config을 가져오기 위해 사용된다.

예를 들자면, 내 Bootstrap.properties 파일에서 내가 다음 Config고 있다.

spring.application.name=Calculation-service
spring.cloud.config.uri=http://localhost:8888

응용 프로그램 시작 시 http://localhost:8888에 접속하여 서비스 Configuration을 가져오려고 하고 Spring Cloud Config 서버에 있는 Calculation-service.properties를 확인합니다.

Calcuation-Service를 시작할 때 로그에서 동일한 내용을 확인할 수 있습니다.

INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888

Bootstrap.yml은 서버에서 설정을 가져오는 데 사용됩니다.Spring 클라우드 애플리케이션 또는 기타 애플리케이션용입니다.일반적으로 다음과 같습니다.

spring:
  application:
    name: "app-name"
  cloud:
    config:
      uri: ${config.server:http://some-server-where-config-resides}

응용 프로그램을 시작하면 응용 프로그램은 지정된 서버에 접속하여 실행/디버깅 설정에 기재된 스프링프로파일에 따라 설정을 읽으려고 합니다.bootstrap.yml은 첫 번째 명령어를 로드합니다.

서버에 도달할 수 없는 경우는, 애플리케이션이 더 이상 진행하지 못할 가능성이 있습니다.단, 프로파일과 일치하는 설정이 로컬에 존재하는 경우 서버 설정은 덮어씁니다.

좋은 어프로치:

로컬에 대해 별도의 프로파일을 유지하고 다른 프로파일을 사용하여 앱을 실행합니다.

bootstrap.yml의 또 다른 용도는 kubernetes configmap secret 리소스에서 설정을 로드하는 것입니다.응용 프로그램은 spring-cloud-starter-kubernetes 종속성을 가져와야 합니다.

Spring Cloud Config와 마찬가지로 부트스트랩 문구 중에 실행해야 합니다.

문서에서:

spring:
  application:
    name: cloud-k8s-app
  cloud:
    kubernetes:
      config:
        name: default-name
        namespace: default-namespace
        sources:
         # Spring Cloud Kubernetes looks up a ConfigMap named c1 in namespace default-namespace
         - name: c1

따라서 meta.name default-name을 사용하여 configmap 리소스에 저장된 속성은 application.yml 속성과 동일하게 참조할 수 있습니다.

그리고 같은 과정이 비밀에도 적용됩니다.

spring:
  application:
    name: cloud-k8s-app
  cloud:
    kubernetes:
      secrets:
        name: default-name
        namespace: default-namespace
        sources:
         # Spring Cloud Kubernetes looks up a Secret named s1 in namespace default-namespace
         - name: s1

Bootstrap.yml은 스프링 부팅 응용 프로그램을 시작할 때 가장 먼저 로드되는 파일이며 application.property는 응용 프로그램이 시작될 때 로드됩니다.따라서 어플리케이션 로드 시 필요한 bootstrap.yml과 application.properties에 데이터베이스 URL 등을 저장할 수 있습니다.

bootstrap.yml은 Spring Cloud를 사용하고 있으며 애플리케이션 구성이 원격 구성 서버(예: Spring Cloud Config Server)에 저장되어 있을 때 사용됩니다.bootstrap.yml은 application.yml보다 먼저 로드됩니다.

언급URL : https://stackoverflow.com/questions/32997352/what-is-the-difference-between-putting-a-property-on-application-yml-or-bootstra

반응형