Руководство. Использование динамической конфигурации в приложении 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
который можно использовать для проверки истечения срока действия кэша. Если срок действия истек, активируется обновление.
Чтобы использовать
AppConfigurationRefresh
, обновите HelloController.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.8.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", перейдите к следующему учебнику.