Руководство по использованию динамической конфигурации в приложении Java Spring
Конфигурация приложения включает две библиотеки для Spring.
- Для
spring-cloud-azure-appconfiguration-config
требуется Spring Boot и зависимость отspring-cloud-context
. spring-cloud-azure-appconfiguration-config-web
требует Spring Web и Spring Boot, а также поддерживает автоматическую проверку обновления конфигурации.
Обе библиотеки поддерживают активацию вручную для проверки обновленных значений конфигурации.
Обновление позволяет обновлять значения конфигурации без перезапуска приложения, хотя и приводит к повторному созданию @RefreshScope
всех компонентов в . При обновлении проверяется наличие любых изменений в настроенных триггерах, включая метаданные. По умолчанию минимальный промежуток времени между проверками изменений (интервал обновления) составляет 30 секунд.
Автоматическое обновление spring-cloud-azure-appconfiguration-config-web
активируется на основе действия, а именно ServletRequestHandledEvent
Spring Web. ServletRequestHandledEvent
Если не активируется, spring-cloud-azure-appconfiguration-config-web
автоматическое обновление не активирует обновление, даже если истек срок действия кэша.
Выполнение обновления вручную
Чтобы выполнить обновление вручную, запустите приложение Spring Boot, использующее Конфигурацию приложений, например приложение, созданное с помощью краткого руководства по Spring Boot для службы "Конфигурация приложений".
Конфигурация приложений предоставляет AppConfigurationRefresh
, который можно использовать для проверка, если истек срок действия кэша и если он истек, активируется обновление.
Обновите HelloController для использования
AppConfigurationRefresh
.import com.azure.spring.cloud.config.AppConfigurationRefresh; @RestController public class HelloController { private final MessageProperties properties; @Autowired(required = false) private AppConfigurationRefresh refresh; public HelloController(MessageProperties properties) { this.properties = properties; } @GetMapping public String getMessage() throws InterruptedException, ExecutionException { if (refresh != null) { refresh.refreshConfigurations(); } return "Message: " + properties.getMessage(); } }
refreshConfigurations()
AppConfigurationRefresh
возвращает значениеMono
, которое равно true, если обновление активировано, или false, если нет. False означает, что срок действия кэша не истек, изменения отсутствуют или другой поток в настоящий момент проверяет наличие обновления.Измените
bootstrap.properties
, чтобы включить обновление.spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled=true spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30s spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key=sentinel
Откройте портал Azure и перейдите к ресурсу Конфигурации приложений, связанному с вашим приложением. Выберите Обозреватель конфигураций в разделе Операции и создайте пару "ключ — значение", выбрав + Создать>Ключ — значение, чтобы добавить следующие параметры:
Ключ Значение sentinel 1 Поля Метка и Тип контента пока заполнять не нужно.
Нажмите кнопку Применить.
Создайте приложение Spring Boot с помощью Maven и запустите его.
mvn clean package mvn spring-boot:run
В браузере перейдите по адресу
http://localhost:8080
. Вы увидите сообщение, связанное с ключом.Вы также можете использовать инструмент curl для проверки приложения, например следующим образом:
curl -X GET http://localhost:8080/
Чтобы проверить динамическую конфигурацию, откройте портал Конфигурации приложений Azure, связанный с вашим приложением. Выберите Обозреватель конфигурацийи обновите значение отображаемого ключа, например следующим образом:
Клавиши Значение /application/config.message Hello - Updated Задайте для созданного ранее ключа Sentinel новое значение. Это изменение активирует приложение для обновления всех ключей конфигурации после прохождения интервала обновления.
Ключ Значение sentinel 2 Обновите страницу браузера дважды, чтобы увидеть новое сообщение. При первом перезапуске активируется обновление, а при втором — загружаются изменения.
Примечание
Библиотека проверяет наличие изменений только после истечения интервала обновления. Если этот период не прошел, то изменения не будут отображаться. Вам придется подождать, пока этот период пройдет, а затем активировать проверку обновления.
Использовать автоматическое обновление
Чтобы использовать автоматическое обновление, запустите приложение Spring Boot, использующее Конфигурацию приложений, например приложение, созданное с помощью краткого руководства по созданию приложения Spring Boot для службы "Конфигурация приложений".
Затем откройте файл pom.xml в текстовом редакторе и добавьте <dependency>
для spring-cloud-azure-appconfiguration-config-web
с помощью следующего кода.
Spring Boot
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
<version>5.4.0</version>
</dependency>
Измените
bootstrap.properties
, чтобы включить обновление.spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled=true spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30s spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key=sentinel
Откройте портал Azure и перейдите к ресурсу Конфигурации приложений, связанному с вашим приложением. Выберите Обозреватель конфигураций в разделе Операции и создайте пару "ключ — значение", выбрав + Создать>Ключ — значение, чтобы добавить следующие параметры:
Ключ Значение sentinel 1 Поля Метка и Тип контента пока заполнять не нужно.
Нажмите кнопку Применить.
Создайте приложение Spring Boot с помощью Maven и запустите его.
mvn clean package mvn spring-boot:run
В браузере перейдите по адресу
http://localhost:8080
. Вы увидите сообщение, связанное с ключом.Вы также можете использовать инструмент curl для проверки приложения, например следующим образом:
curl -X GET http://localhost:8080/
Чтобы проверить динамическую конфигурацию, откройте портал Конфигурации приложений Azure, связанный с вашим приложением. Выберите Обозреватель конфигурацийи обновите значение отображаемого ключа, например следующим образом:
Клавиши Значение /application/config.message Hello - Updated Задайте для созданного ранее ключа Sentinel новое значение. Это изменение активирует приложение для обновления всех ключей конфигурации после прохождения интервала обновления.
Ключ Значение sentinel 2 Обновите страницу браузера дважды, чтобы увидеть новое сообщение. При первом перезапуске активируется обновление, а при втором — загружаются изменения, так как первый запрос возвращается с использованием исходной области.
Примечание
Библиотека проверяет наличие изменений только после истечения интервала обновления. Если интервал обновления не прошел, то изменения не будут отображаться. Вам придется подождать, пока этот интервал пройдет, а затем активировать проверку обновления.
Дальнейшие действия
В рамках этого руководства вы включили в приложении Spring Boot динамическое обновление параметров конфигурации из службы "Конфигурация приложения". Если возникнут дополнительные вопросы, см. справочную документацию, в ней подробно описан принцип работы библиотеки Spring Cloud для Конфигурации приложений Azure. Чтобы узнать, как с помощью удостоверения, управляемого Azure, упростить доступ к службе "Конфигурация приложений Azure", перейдите к следующему учебнику.