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

  1. Обновите 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 означает, что срок действия кэша не истек, изменения отсутствуют или другой поток в настоящий момент проверяет наличие обновления.

  2. Измените 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
    
  3. Откройте портал Azure и перейдите к ресурсу Конфигурации приложений, связанному с вашим приложением. Выберите Обозреватель конфигураций в разделе Операции и создайте пару "ключ — значение", выбрав + Создать>Ключ — значение, чтобы добавить следующие параметры:

    Ключ Значение
    sentinel 1

    Поля Метка и Тип контента пока заполнять не нужно.

  4. Нажмите кнопку Применить.

  5. Создайте приложение Spring Boot с помощью Maven и запустите его.

    mvn clean package
    mvn spring-boot:run
    
  6. В браузере перейдите по адресу http://localhost:8080. Вы увидите сообщение, связанное с ключом.

    Вы также можете использовать инструмент curl для проверки приложения, например следующим образом:

    curl -X GET http://localhost:8080/
    
  7. Чтобы проверить динамическую конфигурацию, откройте портал Конфигурации приложений Azure, связанный с вашим приложением. Выберите Обозреватель конфигурацийи обновите значение отображаемого ключа, например следующим образом:

    Клавиши Значение
    /application/config.message Hello - Updated
  8. Задайте для созданного ранее ключа Sentinel новое значение. Это изменение активирует приложение для обновления всех ключей конфигурации после прохождения интервала обновления.

    Ключ Значение
    sentinel 2
  9. Обновите страницу браузера дважды, чтобы увидеть новое сообщение. При первом перезапуске активируется обновление, а при втором — загружаются изменения.

Примечание

Библиотека проверяет наличие изменений только после истечения интервала обновления. Если этот период не прошел, то изменения не будут отображаться. Вам придется подождать, пока этот период пройдет, а затем активировать проверку обновления.

Использовать автоматическое обновление

Чтобы использовать автоматическое обновление, запустите приложение 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>
  1. Измените 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
    
  2. Откройте портал Azure и перейдите к ресурсу Конфигурации приложений, связанному с вашим приложением. Выберите Обозреватель конфигураций в разделе Операции и создайте пару "ключ — значение", выбрав + Создать>Ключ — значение, чтобы добавить следующие параметры:

    Ключ Значение
    sentinel 1

    Поля Метка и Тип контента пока заполнять не нужно.

  3. Нажмите кнопку Применить.

  4. Создайте приложение Spring Boot с помощью Maven и запустите его.

    mvn clean package
    mvn spring-boot:run
    
  5. В браузере перейдите по адресу http://localhost:8080. Вы увидите сообщение, связанное с ключом.

    Вы также можете использовать инструмент curl для проверки приложения, например следующим образом:

    curl -X GET http://localhost:8080/
    
  6. Чтобы проверить динамическую конфигурацию, откройте портал Конфигурации приложений Azure, связанный с вашим приложением. Выберите Обозреватель конфигурацийи обновите значение отображаемого ключа, например следующим образом:

    Клавиши Значение
    /application/config.message Hello - Updated
  7. Задайте для созданного ранее ключа Sentinel новое значение. Это изменение активирует приложение для обновления всех ключей конфигурации после прохождения интервала обновления.

    Ключ Значение
    sentinel 2
  8. Обновите страницу браузера дважды, чтобы увидеть новое сообщение. При первом перезапуске активируется обновление, а при втором — загружаются изменения, так как первый запрос возвращается с использованием исходной области.

Примечание

Библиотека проверяет наличие изменений только после истечения интервала обновления. Если интервал обновления не прошел, то изменения не будут отображаться. Вам придется подождать, пока этот интервал пройдет, а затем активировать проверку обновления.

Дальнейшие действия

В рамках этого руководства вы включили в приложении Spring Boot динамическое обновление параметров конфигурации из службы "Конфигурация приложения". Если возникнут дополнительные вопросы, см. справочную документацию, в ней подробно описан принцип работы библиотеки Spring Cloud для Конфигурации приложений Azure. Чтобы узнать, как с помощью удостоверения, управляемого Azure, упростить доступ к службе "Конфигурация приложений Azure", перейдите к следующему учебнику.