Snabbstart: Skapa en Java Quarkus-app med Azure App Configuration

I den här snabbstarten införlivar du Azure App Configuration i en Java Quarkus-app för att centralisera lagring och hantering av programinställningar separat från din kod.

Förutsättningar

Lägga till ett nyckel/värde-par

Lägg till följande nyckel/värde-par i App Configuration Store. Mer information om hur du lägger till nyckel/värde-par i ett lager med hjälp av Azure CLI finns i Skapa ett nyckelvärde.

Key Värde
/application/config.message Hello (Hej)

Skapa en Quarkus-app

I det här avsnittet skapar du en Quarkus-app med Azure App Configuration-tillägget och REST-tillägget. REST-tillägget används för att skapa en REST-tjänst som returnerar konfigurationsvärdet från App Configuration Store. Mer information finns i Quarkus Azure App Configuration.

Skapa en Quarkus-app med hjälp av följande kommando:

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"

Appen skapas i en ny katalog med namnet quarkus-app-configuration. Här är appens struktur:

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

Filen pom.xml innehåller beroenden för appen, inklusive Azure App Configuration-tillägget och REST-tillägget. Följande XML är ett typiskt exempel:

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

Filen GreetingResource.java innehåller REST-tjänsten. Du ändrar den här filen för att returnera konfigurationsvärdet från App Configuration Store senare.

Filen GreetingResourceTest.java innehåller enhetstestet för REST-tjänsten. Du ändrar den här filen för att bekräfta att värdet som returneras från REST-tjänsten är lika med värdet i App Configuration Store senare.

Anslut till en App Configuration-lagring

Nu när du har ett appkonfigurationsarkiv och en Quarkus-app med Azure App Configuration-tillägget kan du ansluta appen till butiken.

Koda appen

Konfigurera programmet med hjälp av följande steg:

  1. Öppna filen GreetingResource.java i katalogen src/main/java/com/example och ersätt innehållet med följande kod:

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

    Den ändrade koden använder MicroProfile Config-kommentaren @ConfigProperty för att mata in värdet för nyckeln /application/config.message från App Configuration Store i value fältet och returnerar värdet i REST-tjänsten.

  2. Öppna det automatiskt genererade enhetstestet, som finns i filen GreetingResourceTest.java i katalogen src/test/java/com/example . Ersätt innehållet i filen med följande kod:

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

    Den ändrade koden anger att värdet som returneras från REST-tjänsten är lika med värdet i App Configuration Store. Det här värdet är Hello för nyckeln /application/config.message som du lade till tidigare.

Alla dessa kodändringar i programmet krävs. Innan du kör programmet måste du konfigurera autentiseringen och anslutningen till App Configuration Store.

Konfigurera autentisering till App Configuration Store

Förutom autentisering med åtkomstnycklar stöder Quarkus Azure App Configuration-tillägget autentisering med Microsoft Entra-ID som använder DefaultAzureCredential från Azure Identity-klientbiblioteket.

Du använder Microsoft Entra-ID för autentisering i den här snabbstarten. Mer information DefaultAzureCredential finns i Azure Identity-klientbiblioteket för Java.

Konfigurera autentisering till App Configuration Store med hjälp av följande steg:

  1. Ange miljövariabler med hjälp av följande kommandon och ersätt <...> platshållarna med de värden som du skapade tidigare:

    export RESOURCE_GROUP_NAME="<resource-group-name>"
    export APP_CONFIG_NAME="<app-configuration-store-name>"
    
  2. Använd följande kommandon för att tilldela App Configuration Data Reader rollen till den inloggade användaren:

    # 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. Exportera slutpunkten för App Configuration Store till en miljövariabel med namnet QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT med hjälp av följande kommando:

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

    Anmärkning

    Värdet för miljövariabeln QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT används i konfigurationsegenskapen quarkus.azure.app.configuration.endpoint för Quarkus Azure App Configuration-tillägget för att konfigurera anslutningen till Azure App Configuration Store. Du kan också konfigurera den här egenskapen i filen application.properties i katalogen src/main/resources genom att ange den direkt, som i följande exempel. Se till att ersätta <your-app-configuration-store-endpoint> med ditt faktiska värde.

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

Skapa och köra appen lokalt

Skapa och kör appen lokalt med hjälp av följande steg:

  1. Använd följande kommandon för att skapa och köra appen i JVM-läge:

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

    Anmärkning

    Alternativt kan du köra exemplet i inbyggt läge. Om du vill använda inbyggt läge måste du ha GraalVM installerat eller använda en builder-avbildning för att skapa den inbyggda körbara filen. Mer information finns i Skapa en intern körbar fil. Den här snabbstarten använder Docker som container-runtime för att skapa en Linux-nativ körbar fil. Om du inte har Docker installerat kan du ladda ned det från Docker-webbplatsen.

    Använd följande kommandon för att skapa och köra den inbyggda körbara filen i en Linux-miljö:

    mvn package -Dnative -Dquarkus.native.container-build
    ./target/storage-blob-1.0.0-SNAPSHOT-runner
    
  2. Testa programmet med hjälp av följande kommando:

    curl localhost:8080/hello
    

    Du bör se Hello i utdata eftersom Hello är värdet för /application/config.message-nyckeln du lade till i appkonfigurationslagret.

  3. Tryck på Kontroll+C för att stoppa programmet.

Rensa resurser

För att undvika Azure-avgifter bör du rensa onödiga resurser. När du inte längre behöver App Configuration Store använder du följande kommando för att ta bort resursgruppen och alla relaterade resurser:

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

Se även