Rychlý start: Vytvoření aplikace Java Quarkus pomocí azure App Configuration

V tomto rychlém startu začleníte Azure App Configuration do aplikace Java Quarkus, která centralizuje úložiště a správu nastavení aplikací odděleně od kódu.

Požadavky

Přidání páru klíč-hodnota

Do úložiště App Configuration přidejte následující pár klíč-hodnota. Další informace o přidání párů klíč-hodnota do úložiště pomocí Azure CLI najdete v tématu Vytvoření páru klíč-hodnota.

Key Hodnota
/application/config.message Hello (Nazdar)

Vytvoření aplikace Quarkus

V této části vytvoříte aplikaci Quarkus s rozšířením Azure App Configuration a rozšířením REST. Rozšíření REST slouží k vytvoření služby REST, která vrací hodnotu konfigurace z App Configuration Storu. Další informace najdete v tématu Quarkus Azure App Configuration.

Pomocí následujícího příkazu vytvořte aplikaci Quarkus:

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"

Aplikace se vytvoří v novém adresáři s názvem quarkus-app-configuration. Tady je struktura aplikace:

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

Soubor pom.xml obsahuje závislosti pro aplikaci, včetně rozšíření Azure App Configuration a rozšíření REST. Následující xml je typický příklad:

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

Soubor GreetingResource.java obsahuje službu REST. Tento soubor upravíte tak, aby později vrátil konfigurační hodnotu z App Configuration Storu.

Soubor GreetingResourceTest.java obsahuje test jednotek pro službu REST. Tento soubor upravíte tak, aby se hodnota vrácená ze služby REST rovnala hodnotě v App Configuration Storu později.

Připojení ke službě App Configuration Store

Teď, když máte App Configuration Store a aplikaci Quarkus s rozšířením Azure App Configuration, můžete aplikaci připojit ke Storu.

Kódování aplikace

Aplikaci nakonfigurujte pomocí následujících kroků:

  1. Otevřete soubor GreetingResource.java v adresáři src/main/java/com/example a nahraďte jeho obsah následujícím kódem:

    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;
        }
    }
    

    Upravený kód používá anotaci MicroProfile Config @ConfigProperty k injektování hodnoty klíče /application/config.message z App Configuration Store value do pole, která vrátí hodnotu ve službě REST.

  2. Otevřete automaticky vygenerovaný test jednotek, který je v souboru GreetingResourceTest.java v adresáři src/test/java/com/example . Obsah souboru nahraďte následujícím kódem:

    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"));
        }
    }
    

    Upravený kód tvrdí, že hodnota vrácená ze služby REST se rovná hodnotě v App Configuration Storu. Tato hodnota je Hello určená pro klíč /application/config.message , který jste přidali dříve.

Všechny tyto změny kódu v aplikaci jsou povinné. Před spuštěním aplikace je potřeba nakonfigurovat ověřování a připojení ke službě App Configuration Store.

Nastavení ověřování pro App Configuration store

Kromě ověřování pomocí přístupových klíčů podporuje rozšíření Quarkus Azure App Configuration ověřování pomocí ID Microsoft Entra pomocí DefaultAzureCredential klientské knihovny Azure Identity.

Pro ověřování v tomto rychlém startu použijete ID Microsoft Entra. Další informace najdete DefaultAzureCredential v klientské knihovně azure Identity pro Javu.

Nakonfigurujte ověřování do app Configuration Storu pomocí následujícího postupu:

  1. Nastavte proměnné prostředí pomocí následujících příkazů a nahraďte <...> zástupné symboly hodnotami, které jste vytvořili dříve:

    export RESOURCE_GROUP_NAME="<resource-group-name>"
    export APP_CONFIG_NAME="<app-configuration-store-name>"
    
  2. Pomocí následujících příkazů přiřaďte App Configuration Data Reader roli přihlášenýmu uživateli:

    # 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. Pomocí následujícího příkazu vyexportujte koncový bod z App Configuration Storu do proměnné prostředí s názvem QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT :

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

    Poznámka:

    Hodnota proměnné prostředí QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT se používá ve vlastnosti konfigurace quarkus.azure.app.configuration.endpoint rozšíření Quarkus Azure App Configuration k nastavení připojení k úložišti Azure App Configuration. Alternativně můžete tuto vlastnost nakonfigurovat v souboru application.properties v adresáři src/main/resources tak, že ji nastavíte přímo, jako v následujícím příkladu. Nezapomeňte nahradit <your-app-configuration-store-endpoint> skutečnou hodnotou.

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

Sestavení a místní spuštění aplikace

Aplikaci sestavte a spusťte místně pomocí následujícího postupu:

  1. Pomocí následujících příkazů sestavte a spusťte aplikaci v režimu JVM:

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

    Poznámka:

    Jako alternativu můžete ukázku spustit v nativním režimu. Pokud chcete použít nativní režim, musíte mít nainstalovaný GraalVM nebo použít image tvůrce k sestavení nativního spustitelného souboru. Další informace naleznete v tématu Sestavení nativního spustitelného souboru. V tomto rychlém průvodci se k vytvoření nativního linuxového spustitelného souboru používá Docker jako container runtime. Pokud nemáte Nainstalovaný Docker, můžete si ho stáhnout z webu Dockeru.

    Pomocí následujících příkazů sestavte a spusťte nativní spustitelný soubor v linuxovém prostředí:

    mvn package -Dnative -Dquarkus.native.container-build
    ./target/storage-blob-1.0.0-SNAPSHOT-runner
    
  2. Otestujte aplikaci pomocí následujícího příkazu:

    curl localhost:8080/hello
    

    Ve výstupu byste měli vidět Hello , protože Hello je hodnota /application/config.message klíče, který jste přidali do App Configuration Storu.

  3. Stisknutím klávesy Control+C aplikaci zastavte.

Vyčistěte zdroje

Abyste se vyhnuli poplatkům za Azure, měli byste vyčistit nepotřebné prostředky. Pokud už úložiště App Configuration nepotřebujete, pomocí následujícího příkazu odeberte skupinu prostředků a všechny související prostředky:

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

Viz také