Подтвердить что ты не робот

В чем разница между помещением свойства в application.yml или bootstrap.yml при весенней загрузке?

В чем разница между помещением свойства в application.yml или bootstrap.yml при весенней загрузке? В случае logging.config приложение работает иначе.

4b9b3361

Ответ 1

Я только что спросил парней Spring Cloud и подумал, что должен поделиться информацией, которую я здесь.

bootstrap.yml загружается до application.yml.

Он обычно используется для следующего:

  • при использовании Spring Cloud Config Server вы должны указать spring.application.name и spring.cloud.config.server.git.uri внутри bootstrap.yml
  • информация о encryption/decryption

Технически, bootstrap.yml загружается родительским Spring ApplicationContext. Этот родительский ApplicationContext загружается до того, который использует application.yml.

Ответ 2

bootstrap.yml или bootstrap.properties

Он используется только/необходим, если вы используете Spring Cloud, а ваша конфигурация приложения хранится на удаленном сервере конфигурации (например, Spring Cloud Config Server).

Из документации:

A Spring Облачное приложение работает, создавая контекст "начальной загрузки", который является родительским контекстом для основного приложения. Из коробки он отвечает за загрузку свойств конфигурации из внешних источников, а также дешифрование свойств в локальных файлах внешней конфигурации.

Обратите внимание, что bootstrap.yml или bootstrap.properties могут содержать дополнительную конфигурацию (например, по умолчанию), но обычно вам нужно только установить здесь конфигурацию bootstrap.

Обычно он содержит два свойства:

  • расположение сервера конфигурации (spring.cloud.config.uri)
  • имя приложения (spring.application.name)

При запуске Spring Cloud делает HTTP-вызов на сервере конфигурации с именем приложения и возвращает обратно эту конфигурацию приложения.

application.yml или application.properties

Содержит стандартную конфигурацию приложения - обычно конфигурацию по умолчанию, так как любая конфигурация, полученная во время процесса начальной загрузки, переопределит конфигурацию, определенную здесь.

Ответ 3

Этот ответ был очень красиво объяснен в книге "Вопросы для интервью по микросервисам, для разработчиков Java (Spring Boot, Spring Cloud, Cloud Собственные приложения) от Munish Chandel, версия 1.30, 25.03.2018.

Следующее содержание было взято из этой книги, и общий кредит за этот ответ идет к автору книги, т.е. Munish Chandel

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

bootstrap.yml

С другой стороны, файл bootstrap.yml специфичен для spring-cloud-config и загружается до application.yml

bootstrap.yml требуется только в том случае, если вы используете Spring Cloud и ваша конфигурация микросервиса хранится на удаленном сервере Spring Cloud Config.

Важные моменты о bootstrap.yml

  1. При использовании с сервером Spring Cloud Config вы должны указать имя приложения и расположение git-конфигурации, используя следующие свойства.
spring.application.name: "application-name"
spring.cloud.config.server.git.uri: "git-uri-config"

  1. При использовании с микросервисами (кроме облачного сервера конфигурации) нам необходимо указать имя приложения и местоположение сервера конфигурации, используя указанные ниже свойства
spring.application.name: 
spring.cloud.config.uri: 
  1. Этот файл свойств может содержать другую конфигурацию, относящуюся к среде Spring Cloud, например: Расположение сервера eureka, свойства, связанные с шифрованием/дешифрованием.

После запуска Spring Cloud выполняет HTTP (S) вызов сервера Spring Cloud Config с именем приложения и возвращает конфигурацию этих приложений.

application.yml содержит конфигурацию по умолчанию для микросервиса, и любая конфигурация, полученная (с сервера облачной конфигурации) в процессе начальной загрузки, переопределит конфигурацию, определенную в application.yml

Ответ 4

Bootstrap.yml используется для получения конфигурации с сервера. Это может быть для облачного приложения Spring или для других. Обычно это выглядит так:

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

Когда мы запускаем приложение, оно пытается подключиться к данному серверу и прочитать конфигурацию, основываясь на весеннем профиле, упомянутом в конфигурации run/debug. bootstrap.yml loads the first

Если сервер недоступен, приложение может даже не продолжить работу. Однако, если конфигурации, соответствующие профилю, присутствуют локально, настройки сервера переопределяются.

Хороший подход:

Поддерживать отдельный профиль для локального и запустить приложение, используя разные профили.

Ответ 5

Просто мои 2 цента здесь..

Bootstrap.yml или Bootstrap.properties используется для получения конфигурации из Spring Cloud Server.

Например, в файле My Bootstrap.properties у меня есть следующий Config

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

При запуске приложения оно пытается получить конфигурацию для службы, подключившись к http://localhost: 8888, и просматривает Calculation-service.properties, представленные на сервере Spring Cloud Config.

Вы можете проверить то же самое из журналов Расчёт-Сервис при запуске

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

Ответ 6

Ну, я полностью согласен с уже существующими ответами по этому вопросу:

  • bootstrap.yml используется для сохранения параметров, указывающих, где находится удаленная конфигурация, и с этой удаленной конфигурацией создается контекст приложения Bootstrap.

На самом деле, он также может хранить обычные свойства так же, как и файл application.yml. Но обратите внимание на эту сложную вещь:

  • Если вы поместите свойства в bootstrap.yml, они получат более низкий приоритет, чем почти любые другие источники свойств, включая application.yml. Как описано здесь.

Давайте поясним, что существует два вида свойств, связанных с bootstrap.yml:

  • Свойства, которые загружаются на этапе начальной загрузки. Мы используем bootstrap.yml чтобы найти держатель свойств (файловая система, git-репозиторий или что-то еще), и свойства, которые мы получаем таким образом, имеют высокий приоритет, поэтому они не могут быть переопределены локальной конфигурацией. Как описано здесь.
  • Свойства, которые находятся в bootstrap.yml. Как объяснялось ранее, они получат более низкий приоритет. Используйте их для установки значений по умолчанию, может быть, это хорошая идея.

Таким образом, различия между помещением свойства в application.yml или bootstrap.yml при весенней загрузке:

  • Свойства для загрузки файлов конфигурации в фазе начальной загрузки могут быть помещены только в bootstrap.yml.
  • Как и для всех других типов свойств, поместите их в application.yml получит более высокий приоритет.