Démarrage rapide : Créer une application Java Quarkus avec Azure App Configuration

Dans cette introduction rapide, vous incorporez Azure App Configuration dans une application Java Quarkus pour centraliser le stockage et la gestion des paramètres d’application distincts de votre code.

Prerequisites

Ajouter une paire clé-valeur

Ajoutez la paire clé-valeur suivante au magasin App Configuration. Pour plus d’informations sur l’ajout de paires clé-valeur à un magasin à l’aide d’Azure CLI, consultez Créer une clé-valeur.

Key Valeur
/application/config.message Hello

Créer une application Quarkus

Dans cette section, vous allez créer une application Dockerus avec l’extension Azure App Configuration et l’extension REST. L’extension REST est utilisée pour créer un service REST qui retourne la valeur de configuration à partir du magasin App Configuration. Pour plus d’informations, consultez Quarkus Azure App Configuration.

Créez une application Quarkus à l’aide de la commande suivante :

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"

L’application est créée dans un nouveau répertoire nommé quarkus-app-configuration. Voici la structure de l’application :

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

Le fichier pom.xml contient les dépendances de l’application, notamment l’extension Azure App Configuration et l’extension REST. Le code XML suivant est un exemple classique :

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

Le fichier GreetingResource.java contient le service REST. Vous modifiez ce fichier pour retourner la valeur de configuration à partir du magasin App Configuration ultérieurement.

Le fichier GreetingResourceTest.java contient le test unitaire du service REST. Vous modifiez ce fichier pour affirmer que la valeur retournée par le service REST est égale à la valeur dans le magasin App Configuration ultérieurement.

Se connecter à un magasin App Configuration

Maintenant que vous disposez d’un magasin App Configuration et d’une application Quarkus avec l’extension Azure App Configuration, vous pouvez connecter l’application au magasin.

Coder l’application

Configurez l’application en procédant comme suit :

  1. Ouvrez le fichier GreetingResource.java dans le répertoire src/main/java/com/example , puis remplacez le contenu par le code suivant :

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

    Le code modifié utilise l’annotation MicroProfile Config @ConfigProperty pour injecter la valeur de la clé /application/config.message du magasin App Configuration dans le value champ et retourne la valeur dans le service REST.

  2. Ouvrez le test unitaire généré automatiquement, qui se trouve dans le fichier GreetingResourceTest.java dans le répertoire src/test/java/com/example . Remplacez le contenu du fichier par le code suivant :

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

    Le code modifié affirme que la valeur retournée par le service REST est égale à la valeur dans le magasin App Configuration. Cette valeur concerne Hello la clé /application/config.message que vous avez ajoutée précédemment.

Ces modifications de code apportées à l’application sont toutes requises. Avant d’exécuter l’application, vous devez configurer l’authentification et la connexion au magasin App Configuration.

Configurer l’authentification auprès du magasin App Configuration

En plus de l’authentification avec des clés d’accès, l’extension Azure AppConfiguration prend en charge l’authentification avec Microsoft Entra ID à l’aide DefaultAzureCredential de la bibliothèque cliente Azure Identity.

Vous utilisez l’ID Microsoft Entra pour l’authentification dans ce guide de démarrage rapide. Pour plus d’informations, consultez DefaultAzureCredential la bibliothèque de client Azure Identity pour Java.

Configurez l’authentification auprès du magasin App Configuration en procédant comme suit :

  1. Définissez des variables d’environnement à l’aide des commandes suivantes, en remplaçant les <...> espaces réservés par les valeurs que vous avez créées précédemment :

    export RESOURCE_GROUP_NAME="<resource-group-name>"
    export APP_CONFIG_NAME="<app-configuration-store-name>"
    
  2. Utilisez les commandes suivantes pour affecter le App Configuration Data Reader rôle à l’utilisateur connecté :

    # 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. Exportez le point de terminaison du magasin App Configuration vers une variable d’environnement nommée QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT à l’aide de la commande suivante :

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

    Note

    La valeur de la variable d’environnement QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT est utilisée dans la configuration de la propriété quarkus.azure.app.configuration.endpoint de l'extension Quarkus Azure App Configuration pour établir la connexion au magasin Azure App Configuration. Vous pouvez également configurer cette propriété dans le fichier application.properties dans le répertoire src/main/resources en le définissant directement, comme dans l’exemple suivant. Veillez à remplacer <your-app-configuration-store-endpoint> par votre valeur réelle.

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

Générer et exécuter l’application localement

Générez et exécutez l’application localement en procédant comme suit :

  1. Utilisez les commandes suivantes pour générer et exécuter l’application en mode JVM :

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

    Note

    Vous pouvez également exécuter l’exemple en mode natif. Pour utiliser le mode natif, vous devez installer GraalVM ou utiliser une image de générateur pour générer l’exécutable natif. Pour plus d’informations, consultez Génération d’un exécutable natif. Ce guide de démarrage rapide utilise Docker comme runtime de conteneur pour générer un exécutable natif Linux. Si vous n’avez pas installé Docker, vous pouvez le télécharger à partir du site web Docker.

    Utilisez les commandes suivantes pour générer et exécuter l’exécutable natif dans un environnement Linux :

    mvn package -Dnative -Dquarkus.native.container-build
    ./target/storage-blob-1.0.0-SNAPSHOT-runner
    
  2. Testez votre application à l’aide de la commande suivante :

    curl localhost:8080/hello
    

    Vous devez voir Hello dans la sortie, car Hello est la valeur de la /application/config.message clé que vous avez ajoutée au magasin App Configuration.

  3. Appuyez sur Ctrl+C pour arrêter l’application.

Nettoyer les ressources

Pour éviter des frais Azure, vous devez nettoyer les ressources inutiles. Lorsque vous n’avez plus besoin du magasin App Configuration, utilisez la commande suivante pour supprimer le groupe de ressources et toutes les ressources associées :

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

Voir aussi