Quickstart: Een Java Quarkus-app maken met Azure App Configuration

In deze quickstart neemt u Azure App Configuration op in een Java Quarkus-app om opslag en beheer van toepassingsinstellingen gescheiden van uw code te centraliseren.

Vereiste voorwaarden

Een sleutel-waardepaar toevoegen

Voeg het volgende sleutel-waardepaar toe aan het App Configuration-archief. Zie Een sleutelwaarde maken voor meer informatie over het toevoegen van sleutel-waardeparen aan een winkel met behulp van de Azure CLI.

Key Waarde
/application/config.message Hello (Hallo)

Een Quarkus-app maken

In deze sectie maakt u een Quarkus-app met de Azure App Configuration-extensie en de REST-extensie. De REST-extensie wordt gebruikt om een REST-service te maken die de configuratiewaarde uit het App Configuration-archief retourneert. Zie Quarkus Azure App Configuration voor meer informatie.

Maak een Quarkus-app met behulp van de volgende opdracht:

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"

De app wordt gemaakt in een nieuwe map met de naam quarkus-app-configuration. Dit is de structuur van de app:

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

Het bestandpom.xml bevat de afhankelijkheden voor de app, waaronder de Azure App Configuration-extensie en de REST-extensie. De volgende XML is een typisch voorbeeld:

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

Het bestand GreetingResource.java bevat de REST-service. U wijzigt dit bestand om de configuratiewaarde later uit het App Configuration-archief te retourneren.

Het bestand GreetingResourceTest.java bevat de eenheidstest voor de REST-service. U wijzigt dit bestand om te bevestigen dat de waarde die wordt geretourneerd door de REST-service, gelijk is aan de waarde in het App Configuration-archief later.

Verbinding maken met een App Configuration-winkel

Nu u een App Configuration-archief en een Quarkus-app hebt met de Azure App Configuration-extensie, kunt u de app verbinden met de store.

De toepassing coderen

Configureer de toepassing met behulp van de volgende stappen:

  1. Open het bestand GreetingResource.java in de map src/main/java/com/example en vervang de inhoud door de volgende code:

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

    De gewijzigde code maakt gebruik van de microprofile-configuratieaantekening @ConfigProperty om de waarde van de sleutel /application/config.message uit het App Configuration-archief in het value veld te injecteren en retourneert de waarde in de REST-service.

  2. Open de automatisch gegenereerde eenheidstest, die zich in het GreetingResourceTest.java bestand in de map src/test/java/com/example bevindt. Vervang de inhoud van het bestand door de volgende code:

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

    De gewijzigde code bevestigt dat de waarde die wordt geretourneerd door de REST-service gelijk is aan de waarde in het App Configuration-archief. Deze waarde is Hello voor de sleutel /application/config.message die u eerder hebt toegevoegd.

Deze codewijzigingen in de toepassing zijn allemaal vereist. Voordat u de toepassing uitvoert, moet u de verificatie en verbinding met het App Configuration-archief configureren.

Verificatie configureren voor de App Configuration-configuratiewinkel

Naast verificatie met toegangssleutels ondersteunt de Quarkus Azure App Configuration-extensie verificatie met Microsoft Entra-id met behulp DefaultAzureCredential van de Azure Identity-clientbibliotheek.

In deze quickstart gebruikt u Microsoft Entra ID voor verificatie. Zie de DefaultAzureCredential meer informatie.

Authenticatie configureren voor de App Configuration-opslag door de volgende stappen uit te voeren:

  1. Stel omgevingsvariabelen in met behulp van de volgende opdrachten, waarbij u de <...> tijdelijke aanduidingen vervangt door de waarden die u eerder hebt gemaakt:

    export RESOURCE_GROUP_NAME="<resource-group-name>"
    export APP_CONFIG_NAME="<app-configuration-store-name>"
    
  2. Gebruik de volgende opdrachten om de App Configuration Data Reader rol toe te wijzen aan de aangemelde gebruiker:

    # 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. Exporteer het eindpunt van het App Configuration-archief naar een omgevingsvariabele met de volgende QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT opdracht:

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

    Opmerking

    De waarde van de omgevingsvariabele QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT wordt gebruikt in de configuratie-eigenschap quarkus.azure.app.configuration.endpoint van de Quarkus Azure App Configuration-extensie om de verbinding met het Azure App Configuration-archief in te stellen. U kunt deze eigenschap ook configureren in het bestand application.properties in de map src/main/resources door deze rechtstreeks in te stellen, zoals in het volgende voorbeeld. Zorg ervoor dat u <your-app-configuration-store-endpoint> vervangt door uw werkelijke waarde.

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

De app lokaal bouwen en uitvoeren

Bouw en voer de app lokaal uit met behulp van de volgende stappen:

  1. Gebruik de volgende opdrachten om de app te bouwen en uit te voeren in de JVM-modus:

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

    Opmerking

    Als alternatief kunt u het voorbeeld uitvoeren in de systeemeigen modus. Als u de systeemeigen modus wilt gebruiken, moet u GraalVM geïnstalleerd hebben of een builder-image gebruiken om een native uitvoerbaar bestand te maken. Zie Een systeemeigen uitvoerbaar bestand bouwen voor meer informatie. In deze quickstart wordt Docker gebruikt als containerruntime om een systeemeigen uitvoerbaar Linux-bestand te bouwen. Als u Docker niet hebt geïnstalleerd, kunt u dit downloaden vanaf de Docker-website.

    Gebruik de volgende opdrachten om het systeemeigen uitvoerbare bestand te bouwen en uit te voeren in een Linux-omgeving:

    mvn package -Dnative -Dquarkus.native.container-build
    ./target/storage-blob-1.0.0-SNAPSHOT-runner
    
  2. Test uw toepassing met behulp van de volgende opdracht:

    curl localhost:8080/hello
    

    U ziet Hello in de uitvoer, omdat Hello de waarde is van de /application/config.message sleutel die u hebt toegevoegd aan de App Configuration-opslag.

  3. Druk op Control+C om de toepassing te stoppen.

De hulpbronnen opschonen

Om Azure-kosten te vermijden, moet u overbodige resources opschonen. Wanneer u het App Configuration-archief niet meer nodig hebt, gebruikt u de volgende opdracht om de resourcegroep en alle gerelateerde resources te verwijderen:

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

Zie ook