1. Обзор
Spring Boot — это самоуверенная структура. Несмотря на это, обычно мы переопределяем автоматически настроенные свойства в файле конфигурации приложения, таком как application.properties
.
Однако в приложении Spring Cloud мы часто используем другой файл конфигурации с именем bootstrap.properties
.
В этом кратком руководстве мы объясним различия между bootstrap.properties
и application.properties
.
2. Когда используется файл конфигурации приложения?
Мы используем application.yml
или application.properties
для настройки контекста приложения .
Когда приложение Spring Boot запускается, оно создает контекст приложения, который не нужно настраивать явно — он уже настроен автоматически. Однако Spring Boot предлагает различные способы переопределения этих свойств .
Мы можем переопределить их в коде, аргументах командной строки, параметрах инициализации ServletConfig , параметрах инициализации
ServletContext
, системных свойствах Java, переменных операционной системы и файле свойств приложения.
Важно помнить, что эти файлы свойств приложения имеют самый низкий приоритет по сравнению с другими формами переопределения свойств контекста приложения.
Мы склонны группировать свойства, которые мы можем переопределить в контексте приложения:
- Основные свойства (свойства регистрации, свойства потока)
- Свойства интеграции (свойства
RabbitMQ
, свойстваActiveMQ
) - Веб-свойства (свойства
HTTP
, свойстваMVC
) - Свойства безопасности (свойства
LDAP
, свойстваOAuth2
)
3. Когда используется файл конфигурации Bootstrap?
Мы используем bootstrap.yml
или bootstrap.properties
для настройки контекста начальной загрузки . Таким образом, мы сохраняем внешнюю конфигурацию для начальной загрузки и основного контекста четко разделенными.
Контекст начальной загрузки отвечает за загрузку свойств конфигурации из внешних источников и за расшифровку свойств в локальных внешних файлах конфигурации.
Когда приложение Spring Cloud запускается, оно создает контекст
начальной загрузки
. Первое, что нужно помнить, это то, что контекст
начальной загрузки
является родительским контекстом для основного приложения.
Еще один важный момент, о котором следует помнить, заключается в том, что эти два контекста совместно используют среду Environment
, которая является источником внешних свойств для любого приложения Spring . В отличие от контекста приложения, контекст начальной загрузки использует другое соглашение для поиска внешней конфигурации.
Источником файлов конфигурации может быть, например, файловая система или даже репозиторий git. Службы используют свою зависимость spring-cloud-config-client
для доступа к серверу конфигурации.
Проще говоря, сервер конфигурации — это точка, через которую мы получаем доступ к файлам конфигурации контекста приложения .
4. Быстрый пример
В этом примере файл конфигурации контекста начальной загрузки настраивает зависимость spring-cloud-config-client
для загрузки нужных файлов свойств приложения.
Давайте посмотрим на пример файла bootstrap.properties :
spring.application.name=config-client
spring.profiles.active=development
spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.username=root
spring.cloud.config.password=s3cr3t
spring.cloud.config.fail-fast=true
management.security.enabled=false
5. Вывод
В отличие от приложения Spring Boot, приложение Spring Cloud имеет контекст начальной загрузки, который является родителем контекста приложения. Хотя оба они используют одну и ту же среду Environment
, у них разные соглашения о расположении внешних файлов конфигурации.
Контекст начальной загрузки ищет файл
bootstrap.properties
или bootstrap.yaml, тогда как контекст приложения ищет файл
application.properties
или application.yaml .
``
И, конечно же, свойства конфигурации контекста начальной загрузки загружаются до свойств конфигурации контекста приложения.