Schnellstart: Erstellen einer Java-Quarkus-App mit Azure App Configuration

In dieser Schnellstartanleitung integrieren Sie die Azure-App-Konfiguration in eine Java Aspxus-App, um den Speicher und die Verwaltung von Anwendungseinstellungen getrennt von Ihrem Code zu zentralisieren.

Voraussetzungen

Hinzufügen eines Schlüsselwertpaars

Fügen Sie dem App-Konfigurationsspeicher das folgende Schlüssel-Wert-Paar hinzu. Weitere Informationen zum Hinzufügen von Schlüssel-Wert-Paaren zu einem Speicher mithilfe der Azure CLI finden Sie unter Erstellen eines Schlüsselwerts.

Key Wert
/application/config.message Hallo

Erstellen einer Quarkus-App

In diesem Abschnitt erstellen Sie eine Quarkus-App mit der Azure-App-Konfigurationserweiterung und der REST-Erweiterung. Die REST-Erweiterung wird verwendet, um einen REST-Dienst zu erstellen, der den Konfigurationswert aus dem App-Konfigurationsspeicher zurückgibt. Weitere Informationen finden Sie unter Quarkus Azure App Configuration.

Erstellen Sie eine Quarkus-App mithilfe des folgenden Befehls:

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"

Die App wird in einem neuen Verzeichnis mit dem Namen "quarkus-app-configuration" erstellt. Dies ist die Struktur der App:

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

Die pom.xml Datei enthält die Abhängigkeiten für die App, einschließlich der Azure AppKonfigurationserweiterung und der REST-Erweiterung. Der folgende XML-Code ist ein typisches Beispiel:

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

Die datei GreetingResource.java enthält den REST-Dienst. Sie ändern diese Datei, um den Konfigurationswert später aus dem App-Konfigurationsspeicher zurückzugeben.

Die datei GreetingResourceTest.java enthält den Komponententest für den REST-Dienst. Sie ändern diese Datei so, dass der vom REST-Dienst zurückgegebene Wert dem Wert im App-Konfigurationsspeicher später entspricht.

Herstellen einer Verbindung mit einem App Configuration-Speicher

Nachdem Sie nun über einen App Configuration-Store und eine Quarkus-App mit der Azure App Configuration-Erweiterung verfügen, können Sie die App mit dem Store verbinden.

Codieren der Anwendung

Konfigurieren Sie die Anwendung mithilfe der folgenden Schritte:

  1. Öffnen Sie die GreetingResource.java Datei im Verzeichnis "src/main/java/com/example ", und ersetzen Sie den Inhalt durch den folgenden 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;
        }
    }
    

    Der geänderte Code verwendet die MicroProfile Config-Anmerkung @ConfigProperty , um den Wert des Schlüssels /application/config.message aus dem App-Konfigurationsspeicher in das value Feld einzufügen, und gibt den Wert im REST-Dienst zurück.

  2. Öffnen Sie den automatisch generierten Komponententest, der sich in der datei GreetingResourceTest.java im Verzeichnis "src/test/java/com/example " befindet. Ersetzen Sie den Inhalt der Datei durch den folgenden 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"));
        }
    }
    

    Der geänderte Code bestätigt, dass der vom REST-Dienst zurückgegebene Wert dem Wert im App-Konfigurationsspeicher entspricht. Dieser Wert gilt Hello für den Schlüssel /application/config.message , den Sie zuvor hinzugefügt haben.

Diese Codeänderungen an der Anwendung sind alle erforderlich. Bevor Sie die Anwendung ausführen, müssen Sie die Authentifizierung und Verbindung mit dem App-Konfigurationsspeicher konfigurieren.

Konfigurieren der Authentifizierung für den App Configuration Store

Neben der Authentifizierung mit Zugriffsschlüsseln unterstützt die Azure-App-Konfigurationserweiterung die Authentifizierung mit Microsoft Entra ID mithilfe von DefaultAzureCredential aus der Azure Identity-Clientbibliothek.

Sie verwenden die Microsoft Entra-ID für die Authentifizierung in dieser Schnellstartanleitung. Weitere Informationen finden Sie in DefaultAzureCredential der Azure Identity-Clientbibliothek für Java.

Konfigurieren Sie die Authentifizierung für den App-Konfigurationsspeicher mithilfe der folgenden Schritte:

  1. Legen Sie Umgebungsvariablen mithilfe der folgenden Befehle fest, und ersetzen Sie die <...> Platzhalter durch die Werte, die Sie zuvor erstellt haben:

    export RESOURCE_GROUP_NAME="<resource-group-name>"
    export APP_CONFIG_NAME="<app-configuration-store-name>"
    
  2. Verwenden Sie die folgenden Befehle, um die App Configuration Data Reader Rolle dem angemeldeten Benutzer zuzuweisen:

    # 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. Exportieren Sie den Endpunkt des App-Konfigurationsspeichers in eine Umgebungsvariable, die mit dem folgenden Befehl benannt wird 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)
    

    Hinweis

    Der Wert der Umgebungsvariable QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT wird in der Konfigurationseigenschaft quarkus.azure.app.configuration.endpoint der Azure-App-Konfigurationserweiterung Von Quarkus verwendet, um die Verbindung zum Azure App Configuration Store einzurichten. Alternativ können Sie diese Eigenschaft in der Datei "application.properties " im Verzeichnis "src/main/resources " konfigurieren, indem Sie sie wie im folgenden Beispiel direkt festlegen. Achten Sie darauf, <your-app-configuration-store-endpoint> durch den tatsächlichen Wert zu ersetzen.

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

Lokales Erstellen und Ausführen der App

Erstellen und ausführen Sie die App lokal, indem Sie die folgenden Schritte ausführen:

  1. Verwenden Sie die folgenden Befehle, um die App im JVM-Modus zu erstellen und auszuführen:

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

    Hinweis

    Alternativ können Sie das Beispiel im nativen Modus ausführen. Um den nativen Modus zu verwenden, müssen Sie GraalVM installiert haben oder ein Generatorimage verwenden, um die native ausführbare Datei zu erstellen. Weitere Informationen finden Sie unter Erstellen einer nativen ausführbaren Datei. Diese Schnellstartanleitung verwendet Docker als Containerlaufzeit, um eine systemeigene ausführbare Linux-Datei zu erstellen. Wenn Sie Docker nicht installiert haben, können Sie es von der Docker-Website herunterladen.

    Verwenden Sie die folgenden Befehle, um die systemeigene ausführbare Datei in einer Linux-Umgebung zu erstellen und auszuführen:

    mvn package -Dnative -Dquarkus.native.container-build
    ./target/storage-blob-1.0.0-SNAPSHOT-runner
    
  2. Testen Sie Ihre Anwendung mithilfe des folgenden Befehls:

    curl localhost:8080/hello
    

    Sie sollten Hello in der Ausgabe sehen, da Hello der Wert des /application/config.message-Schlüssels ist, den Sie dem App-Konfigurationsspeicher hinzugefügt haben.

  3. Drücken Sie CTRL+C , um die Anwendung zu beenden.

Bereinigen von Ressourcen

Zum Vermeiden von Azure-Gebühren sollten Sie nicht benötigte Ressourcen bereinigen. Wenn Sie den App-Konfigurationsspeicher nicht mehr benötigen, verwenden Sie den folgenden Befehl, um die Ressourcengruppe und alle zugehörigen Ressourcen zu entfernen:

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

Siehe auch