В чем разница между помещением свойства в application.yml или bootstrap.yml при весенней загрузке? В случае logging.config приложение работает иначе.
251
В чем разница между помещением свойства в application.yml или bootstrap.yml при весенней загрузке? В случае logging.config приложение работает иначе.
bootstrap.yml
насколько я вижу, специфичен для [spring-cloud-config
] ( cloud.spring.io/spring-cloud-config/… )), и это конфигурация, используемая для поиска правильной конфигурации. Так чтоОтветы:
Я только что спросил
Spring Cloud
парней и подумал, что я должен поделиться информацией, которую я имею здесь.bootstrap.yml
загружен раньшеapplication.yml
.Обычно используется для следующего:
spring.application.name
иspring.cloud.config.server.git.uri
внутриbootstrap.yml
encryption/decryption
информацияТехнически,
bootstrap.yml
загружается родительским SpringApplicationContext
. Этот родительскийApplicationContext
загружается перед тем, который используетapplication.yml
.источник
bootstrap.yml
?bootstrap.yml
илиbootstrap.properties
Он используется / нужен только в том случае, если вы используете Spring Cloud, и конфигурация вашего приложения хранится на удаленном сервере конфигурации (например, Spring Cloud Config Server).
Из документации:
Обратите внимание, что
bootstrap.yml
илиbootstrap.properties
может содержать дополнительную конфигурацию (например, настройки по умолчанию), но обычно вам нужно только указать конфигурацию начальной загрузки здесь.Обычно он содержит два свойства:
spring.cloud.config.uri
)spring.application.name
)После запуска Spring Cloud выполняет HTTP-вызов на сервер конфигурации с именем приложения и возвращает конфигурацию этого приложения.
application.yml
илиapplication.properties
Содержит стандартную конфигурацию приложения - обычно конфигурацию по умолчанию, так как любая конфигурация, полученная в процессе начальной загрузки, переопределит конфигурацию, определенную здесь.
источник
Этот ответ был очень красиво объяснен в книге « Вопросы интервью на микроуслугах, для разработчиков Java (Spring Boot, Spring Cloud, Cloud Native Applications) », Munish Chandel , версия 1.30, 25.03.2018.
application.yml
Файл application.yml / application.properties специфичен для приложений Spring Boot. Если вы не измените расположение внешних свойств приложения, весенняя загрузка всегда будет загружать application.yml из следующего расположения:
Вы можете хранить все внешние свойства для вашего приложения в этом файле. Общие свойства, доступные в любом проекте Spring Boot, можно найти по адресу: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html. Эти свойства можно настроить следующим образом. согласно вашим потребностям приложения. Пример файла показан ниже:
bootstrap.yml
С другой стороны, файл bootstrap.yml специфичен для spring-cloud-config и загружается перед application.yml.
bootstrap.yml требуется только в том случае, если вы используете Spring Cloud и ваша конфигурация микросервиса хранится на удаленном сервере Spring Cloud Config.
Важные моменты о bootstrap.yml
После запуска Spring Cloud выполняет HTTP (S) -провождение к серверу Spring Cloud Config с именем приложения и возвращает конфигурацию этого приложения.
application.yml содержит конфигурацию по умолчанию для микросервиса, и любая конфигурация, полученная (с сервера облачной конфигурации) в процессе начальной загрузки, переопределит конфигурацию, определенную в application.yml
источник
Просто мои 2 цента здесь ..
Bootstrap.yml или Bootstrap.properties используется для получения конфигурации из Spring Cloud Server.
Например, в файле My Bootstrap.properties у меня есть следующий Config
При запуске приложения оно пытается получить конфигурацию для службы, подключившись к http: // localhost: 8888, и просматривает Calculation-service.properties, представленные на сервере Spring Cloud Config.
Вы можете проверить то же самое из журналов Расчёт-Сервис при запуске
INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
источник
Ну, я полностью согласен с уже существующими ответами по этому вопросу:
bootstrap.yml
используется для сохранения параметров, указывающих, где находится удаленная конфигурация, и с этой удаленной конфигурацией создается контекст приложения Bootstrap .На самом деле, он также может хранить обычные свойства так же, как и то, что
application.yml
делают. Но обратите внимание на эту хитрую вещь:bootstrap.yml
, они получат более низкий приоритет, чем почти любые другие источники свойств, включая application.yml. Как описано здесь .Давайте поясним, что есть два типа свойств, связанных с
bootstrap.yml
:bootstrap.yml
чтобы найти держатель свойств (файловая система, git-репозиторий или что-то еще), и свойства, которые мы получаем таким образом, имеют высокий приоритет, поэтому они не могут быть переопределены локальной конфигурацией. Как описано здесь .bootstrap.yml
. Как объяснялось ранее, они получат более низкий приоритет. Используйте их для установки значений по умолчанию, может быть, это хорошая идея.Таким образом, различия между помещением свойства в
application.yml
илиbootstrap.yml
при загрузке весной:bootstrap.yml
.application.yml
будет иметь более высокий приоритет.источник
Bootstrap.yml используется для получения конфигурации с сервера. Это может быть для облачного приложения Spring или для других. Обычно это выглядит так:
Когда мы запускаем приложение, оно пытается подключиться к данному серверу и прочитать конфигурацию, основываясь на весеннем профиле, упомянутом в конфигурации run / debug.
Если сервер недоступен, приложение может даже не продолжить работу. Однако, если конфигурации, соответствующие профилю, присутствуют локально, настройки сервера переопределяются.
Хороший подход:
Поддерживать отдельный профиль для локального и запустить приложение, используя разные профили.
источник
Другое использование для bootstrap.yml - загрузка конфигурации из configmap и секретных ресурсов kubernetes . Приложение должно импортировать spring-cloud-starter-kubernetes зависимость .
Как и в случае Spring Cloud Config, это должно происходить во время начальной загрузки.
Из документов:
Поэтому к свойствам, хранящимся в ресурсе configmap с именем meta.name default-name, можно ссылаться точно так же, как и к свойствам в application.yml.
И тот же процесс относится к секретам:
источник
Bootstrap.yml - это первый файл, загружаемый при запуске весенней загрузки приложения, а application.property загружается при запуске приложения. Таким образом, вы можете сохранить учетные данные вашего сервера конфигурации и т. Д. В файле bootstrap.yml, который требуется при загрузке приложения, а затем в файле application.properties, который вы сохраняете, может быть URL базы данных и т. Д.
источник