Szybki start: tworzenie aplikacji Java Quarkus przy użyciu usługi Azure App Configuration

W tym przewodniku, dotyczącym szybkiego startu, zaimplementujesz usługę Azure App Configuration w aplikacji Java Quarkus, aby scentralizować przechowywanie i zarządzanie ustawieniami aplikacji oddzielnie od kodu.

Wymagania wstępne

Dodawanie pary klucz-wartość

Dodaj następującą parę klucz-wartość do sklepu App Configuration. Aby uzyskać więcej informacji na temat dodawania par klucz-wartość do magazynu przy użyciu interfejsu wiersza polecenia platformy Azure, zobacz Tworzenie pary klucz-wartość.

Key Wartość
/application/config.message Hello (Cześć)

Tworzenie aplikacji Quarkus

W tej sekcji utworzysz aplikację Quarkus z rozszerzeniem Azure App Configuration i rozszerzeniem REST. Rozszerzenie REST służy do tworzenia usługi REST, która zwraca wartość konfiguracji ze sklepu App Configuration. Aby uzyskać więcej informacji, zobacz Quarkus Azure App Configuration.

Utwórz aplikację Quarkus przy użyciu następującego polecenia:

mvn io.quarkus.platform:quarkus-maven-plugin:create \
    -DprojectGroupId=com.example \
    -DprojectArtifactId=quarkus-app-configuration \
    -Dextensions='io.quarkiverse.azureservices:quarkus-azure-app-configuration,rest' \
    -DjavaVersion="17"

Aplikacja jest tworzona w nowym katalogu o nazwie quarkus-app-configuration. Oto struktura aplikacji:

quarkus-app-configuration
├── src
│   ├── main/java/com/example
│   │   ├── GreetingResource.java
│   └── test/java/com/example
│       └── GreetingResourceTest.java
├── pom.xml

Plik pom.xml zawiera zależności aplikacji, w tym rozszerzenie usługi Azure App Configuration i rozszerzenie REST. Poniższy kod XML jest typowym przykładem:

<dependency>
    <groupId>io.quarkiverse.azureservices</groupId>
    <artifactId>quarkus-azure-app-configuration</artifactId>
</dependency>
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-rest</artifactId>
</dependency>

Plik GreetingResource.java zawiera usługę REST. Zmodyfikujesz ten plik, aby później zwrócić wartość konfiguracji ze sklepu App Configuration.

Plik GreetingResourceTest.java zawiera test jednostkowy usługi REST. Zmodyfikujesz ten plik, aby potwierdzić, że wartość zwrócona z usługi REST jest równa wartości w magazynie App Configuration w późniejszym czasie.

Nawiązanie połączenia ze sklepem App Configuration

Teraz, gdy masz sklep App Configuration i aplikację Quarkus z rozszerzeniem Azure App Configuration, możesz połączyć aplikację ze sklepem.

Kodowanie aplikacji

Skonfiguruj aplikację, wykonując następujące kroki:

  1. Otwórz plik GreetingResource.java w katalogu src/main/java/com/example i zastąp zawartość następującym kodem:

    package com.example;
    
    import jakarta.ws.rs.GET;
    import jakarta.ws.rs.Path;
    import jakarta.ws.rs.Produces;
    import jakarta.ws.rs.core.MediaType;
    
    import org.eclipse.microprofile.config.inject.ConfigProperty;
    
    @Path("/hello")
    public class GreetingResource {
    
        @ConfigProperty(name = "/application/config.message")
        String value;
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String hello() {
            return value;
        }
    }
    

    Zmodyfikowany kod wykorzystuje adnotację MicroProfile Config @ConfigProperty do wstrzyknięcia wartości klucza /application/config.message z magazynu konfiguracji aplikacji do pola value, a następnie zwraca wartość w usłudze REST.

  2. Otwórz automatycznie wygenerowany test jednostkowy, który znajduje się w pliku GreetingResourceTest.java w katalogu src/test/java/com/example . Zastąp zawartość pliku następującym kodem:

    package com.example;
    
    import io.quarkus.test.junit.QuarkusTest;
    import org.junit.jupiter.api.Test;
    
    import javax.inject.Inject;
    
    import static io.restassured.RestAssured.given;
    import static org.hamcrest.CoreMatchers.is;
    
    @QuarkusTest
    public class GreetingResourceTest {
        @Test
        public void testHelloEndpoint() {
            given()
                .when().get("/hello")
                .then()
                .statusCode(200)
                .body(is("Hello"));
        }
    }
    

    Zmodyfikowany kod zapewnia, że wartość zwrócona z usługi REST jest równa wartości w usłudze App Configuration. Ta wartość to Hello dla klucza /application/config.message, który został dodany wcześniej.

Wszystkie te zmiany kodu w aplikacji są wymagane. Przed uruchomieniem aplikacji musisz skonfigurować uwierzytelnianie i połączenie z usługą App Configuration.

Konfigurowanie uwierzytelniania w sklepie App Configuration

Oprócz uwierzytelniania za pomocą kluczy dostępu rozszerzenie Quarkus Azure App Configuration obsługuje uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft przy użyciu biblioteki DefaultAzureCredential klienta tożsamości platformy Azure.

Używasz Microsoft Entra ID do uwierzytelniania w tym szybkim rozpoczęciu. Aby uzyskać więcej informacji, zobacz DefaultAzureCredentialw bibliotece klienta tożsamości platformy Azure dla języka Java.

Aby skonfigurować uwierzytelnianie w magazynie App Configuration, wykonaj następujące kroki:

  1. Ustaw zmienne środowiskowe przy użyciu następujących poleceń, zastępując <...> symbole zastępcze utworzonymi wcześniej wartościami:

    export RESOURCE_GROUP_NAME="<resource-group-name>"
    export APP_CONFIG_NAME="<app-configuration-store-name>"
    
  2. Użyj następujących poleceń, aby przypisać App Configuration Data Reader rolę do zalogowanego użytkownika:

    # Retrieve the app configuration resource ID
    export APP_CONFIGURATION_RESOURCE_ID=$(az appconfig show \
        --resource-group $RESOURCE_GROUP_NAME \
        --name "${APP_CONFIG_NAME}" \
        --query 'id' \
        --output tsv)
    # Assign the "App Configuration Data Reader" role to the current signed-in identity
    az role assignment create \
        --assignee $(az ad signed-in-user show --query 'id' --output tsv) \
        --role "App Configuration Data Reader" \
        --scope $APP_CONFIGURATION_RESOURCE_ID
    
  3. Wyeksportuj punkt końcowy magazynu App Configuration do zmiennej środowiskowej o nazwie QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT przy użyciu następującego polecenia:

    export QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT=$(az appconfig show \
        --resource-group "${RESOURCE_GROUP_NAME}" \
        --name "${APP_CONFIG_NAME}" \
        --query endpoint \
        --output tsv)
    

    Uwaga / Notatka

    Wartość zmiennej środowiskowej QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT jest używana w atrybucie konfiguracji quarkus.azure.app.configuration.endpoint rozszerzenia Quarkus Azure App Configuration, aby skonfigurować połączenie ze sklepem usługi Azure App Configuration. Alternatywnie tę właściwość można skonfigurować w pliku application.properties w katalogu src/main/resources , ustawiając ją bezpośrednio, jak w poniższym przykładzie. Pamiętaj, aby zastąpić <your-app-configuration-store-endpoint> swoją rzeczywistą wartością.

    quarkus.azure.app.configuration.endpoint=<your-app-configuration-store-endpoint>
    

Lokalne kompilowanie i uruchamianie aplikacji

Skompiluj i uruchom aplikację lokalnie, wykonując następujące kroki:

  1. Użyj następujących poleceń, aby skompilować i uruchomić aplikację w trybie JVM:

    # Build, test and package the app
    mvn clean package
    
    # Run the app
    java -jar ./target/quarkus-app/quarkus-run.jar
    

    Uwaga / Notatka

    Alternatywnie możesz uruchomić przykład w trybie natywnym. Aby użyć trybu natywnego, musisz mieć zainstalowany GraalVM lub użyć obrazu budującego do stworzenia natywnego pliku wykonywalnego. Aby uzyskać więcej informacji, zobacz Tworzenie natywnego pliku wykonywalnego. Ten przewodnik Szybki start używa platformy Docker jako środowiska uruchomieniowego kontenera do tworzenia natywnego pliku wykonywalnego systemu Linux. Jeśli nie masz zainstalowanej platformy Docker, możesz pobrać ją z witryny internetowej platformy Docker.

    Użyj następujących poleceń, aby skompilować i wykonać natywny plik wykonywalny w środowisku systemu Linux:

    mvn package -Dnative -Dquarkus.native.container-build
    ./target/storage-blob-1.0.0-SNAPSHOT-runner
    
  2. Przetestuj aplikację przy użyciu następującego polecenia:

    curl localhost:8080/hello
    

    Powinieneś zobaczyć Hello w danych wyjściowych, ponieważ Hello jest wartością klucza /application/config.message dodanego do magazynu konfiguracji aplikacji.

  3. Naciśnij Control+C , aby zatrzymać aplikację.

Uprzątnij zasoby

Aby uniknąć opłat za platformę Azure, należy wyczyścić niepotrzebne zasoby. Jeśli magazyn App Configuration nie jest już potrzebny, użyj następującego polecenia, aby usunąć grupę zasobów i wszystkie powiązane zasoby:

az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait

Zobacz także