Samouczek: używanie konfiguracji dynamicznej w aplikacji Java Spring

App Configuration ma dwie biblioteki dla platformy Spring.

  • spring-cloud-azure-appconfiguration-config wymaga platformy Spring Boot i przyjmuje zależność od spring-cloud-contextelementu .
  • spring-cloud-azure-appconfiguration-config-web wymaga platformy Spring Web wraz z platformą Spring Boot, a także dodaje obsługę automatycznego sprawdzania odświeżania konfiguracji.

Obie biblioteki obsługują wyzwalanie ręczne w celu sprawdzenia wartości odświeżonych konfiguracji.

Funkcja Refresh umożliwia aktualizowanie wartości konfiguracji bez konieczności ponownego @RefreshScope uruchamiania aplikacji, ale powoduje ponowne utworzenie wszystkich fasoli w obiekcie . Sprawdza wszelkie zmiany skonfigurowanych wyzwalaczy, w tym metadanych. Domyślnie minimalny czas między sprawdzaniem zmian, interwałem odświeżania jest ustawiony na 30 sekund.

spring-cloud-azure-appconfiguration-config-webAutomatyczne odświeżanie jest wyzwalane na podstawie działań, w szczególności platformy ServletRequestHandledEventSpring Web. Jeśli element ServletRequestHandledEvent nie zostanie wyzwolony, automatyczne odświeżanie nie wyzwoli odświeżania, spring-cloud-azure-appconfiguration-config-webnawet jeśli czas wygaśnięcia pamięci podręcznej wygasł.

Korzystanie z odświeżania ręcznego

Aby użyć odświeżania ręcznego, zacznij od aplikacji Spring Boot korzystającej z App Configuration, takiej jak aplikacja, którą tworzysz, postępując zgodnie z przewodnikiem Szybki start platformy Spring Boot dla App Configuration.

App Configuration uwidacznia AppConfigurationRefreshelement , który może służyć do sprawdzania, czy pamięć podręczna wygasła i czy wygasło odświeżanie zostało wyzwolone.

  1. Zaktualizuj polecenie HelloController, aby użyć polecenia 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();
        }
    }
    

    AppConfigurationRefreshWartość "s refreshConfigurations() zwraca Mono wartość true, jeśli odświeżanie zostało wyzwolone, a jeśli nie, wartość false. Fałsz oznacza, że czas wygaśnięcia pamięci podręcznej nie wygasł, nie nastąpiła żadna zmiana lub inny wątek jest obecnie sprawdzany pod kątem odświeżenia.

  2. Aktualizacja bootstrap.properties w celu włączenia odświeżania

    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. Otwórz witrynę Azure Portal i przejdź do zasobu App Configuration skojarzonego z aplikacją. Wybierz pozycję Eksplorator konfiguracji w obszarze Operacje i utwórz nową parę klucz-wartość, wybierając pozycję + Utwórz>klucz-wartość , aby dodać następujące parametry:

    Klucz Wartość
    sentinel 1

    Na razie pozostaw puste pole Etykieta i Typ zawartości .

  4. Wybierz przycisk Zastosuj.

  5. Skompiluj aplikację Spring Boot przy użyciu narzędzia Maven i uruchom ją.

    mvn clean package
    mvn spring-boot:run
    
  6. Otwórz okno przeglądarki i przejdź do adresu URL: http://localhost:8080. Zostanie wyświetlony komunikat skojarzony z kluczem.

    Możesz również użyć narzędzia curl do przetestowania aplikacji, na przykład:

    curl -X GET http://localhost:8080/
    
  7. Aby przetestować konfigurację dynamiczną, otwórz portal Azure App Configuration skojarzony z aplikacją. Wybierz pozycję Eksplorator konfiguracji i zaktualizuj wartość wyświetlanego klucza, na przykład:

    Klucz Wartość
    /application/config.message Witaj — zaktualizowano
  8. Zaktualizuj utworzony wcześniej klucz sentinel do nowej wartości. Ta zmiana wyzwala aplikację w celu odświeżenia wszystkich kluczy konfiguracji po przekazaniu interwału odświeżania.

    Klucz Wartość
    sentinel 2
  9. Odśwież stronę przeglądarki dwa razy, aby zobaczyć wyświetlany nowy komunikat. Po raz pierwszy wyzwala odświeżanie, drugi ładuje zmiany.

Uwaga

Biblioteka sprawdza tylko zmiany po upływie interwału odświeżania, jeśli okres nie przeszedł, wówczas nie będzie widoczna żadna zmiana, trzeba będzie poczekać na przejście okresu, a następnie wyzwolić sprawdzanie odświeżania.

Korzystanie z automatycznego odświeżania

Aby użyć automatycznego odświeżania, zacznij od aplikacji Spring Boot korzystającej z App Configuration, takiej jak utworzona aplikacja, korzystając z przewodnika Szybki start Spring Boot dla App Configuration.

Następnie otwórz plik pom.xml w edytorze tekstów i dodaj element <dependency> do spring-cloud-azure-appconfiguration-config-web użycia przy użyciu następującego kodu.

Spring Boot

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
    <version>5.8.0</version>
</dependency>
  1. Aktualizacja bootstrap.properties w celu włączenia odświeżania

    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. Otwórz witrynę Azure Portal i przejdź do zasobu App Configuration skojarzonego z aplikacją. Wybierz pozycję Eksplorator konfiguracji w obszarze Operacje i utwórz nową parę klucz-wartość, wybierając pozycję + Utwórz>klucz-wartość , aby dodać następujące parametry:

    Klucz Wartość
    sentinel 1

    Na razie pozostaw puste pole Etykieta i Typ zawartości .

  3. Wybierz przycisk Zastosuj.

  4. Skompiluj aplikację Spring Boot przy użyciu narzędzia Maven i uruchom ją.

    mvn clean package
    mvn spring-boot:run
    
  5. Otwórz okno przeglądarki i przejdź do adresu URL: http://localhost:8080. Zostanie wyświetlony komunikat skojarzony z kluczem.

    Możesz również użyć narzędzia curl do przetestowania aplikacji, na przykład:

    curl -X GET http://localhost:8080/
    
  6. Aby przetestować konfigurację dynamiczną, otwórz portal Azure App Configuration skojarzony z aplikacją. Wybierz pozycję Eksplorator konfiguracji i zaktualizuj wartość wyświetlanego klucza, na przykład:

    Klucz Wartość
    /application/config.message Witaj — zaktualizowano
  7. Zaktualizuj utworzony wcześniej klucz sentinel do nowej wartości. Ta zmiana wyzwala aplikację w celu odświeżenia wszystkich kluczy konfiguracji po przekazaniu interwału odświeżania.

    Klucz Wartość
    sentinel 2
  8. Odśwież stronę przeglądarki dwa razy, aby zobaczyć wyświetlany nowy komunikat. Po raz pierwszy wyzwala odświeżanie, drugi ładuje zmiany, ponieważ pierwsze żądanie zwraca wartość przy użyciu oryginalnego zakresu.

Uwaga

Biblioteka sprawdza tylko zmiany po upływie interwału odświeżania. Jeśli interwał odświeżania nie został przekazany, nie będzie on sprawdzany pod kątem zmian, trzeba będzie poczekać na przekazanie interwału, a następnie wyzwolić sprawdzanie odświeżania.

Następne kroki

W tym samouczku włączono aplikację Spring Boot w celu dynamicznego odświeżania ustawień konfiguracji z App Configuration. Aby uzyskać więcej pytań, zobacz dokumentację referencyjną, zawiera ona wszystkie szczegółowe informacje na temat sposobu działania biblioteki spring cloud Azure App Configuration. Aby dowiedzieć się, jak używać tożsamości zarządzanej platformy Azure w celu usprawnienia dostępu do App Configuration, przejdź do następnego samouczka.