Guida introduttiva: Creare un'applicazione Java Quarkus con Configurazione app di Azure

In questa guida introduttiva, si integra Azure App Configuration in un'app Java Quarkus per centralizzare l'archiviazione e la gestione delle impostazioni dell'applicazione, per separarle dal codice.

Prerequisiti

Aggiungi una coppia chiave-valore

Aggiungere la coppia chiave-valore seguente all'archivio di App Configuration. Per altre informazioni su come aggiungere coppie chiave-valore a un archivio usando l'interfaccia della riga di comando di Azure, vedere Creare un valore chiave.

Key Value
/application/config.message Ciao

Creare un'app Quarkus

In questa sezione viene creata un'app Quarkus con l'estensione Configurazione app di Azure e l'estensione REST. L'estensione REST viene usata per creare un servizio REST che restituisce il valore di configurazione dall'archivio di Configurazione app. Per altre informazioni, vedere Configurazione app di Azure Quarkus.

Creare un'app Quarkus usando il comando seguente:

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'app viene creata in una nuova directory denominata quarkus-app-configuration. Ecco la struttura dell'app:

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

Il file pom.xml contiene le dipendenze per l'app, tra cui l'estensione Configurazione app di Azure e l'estensione REST. Il codice XML seguente è un esempio tipico:

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

Il file GreetingResource.java contiene il servizio REST. Questo file viene modificato per restituire il valore di configurazione dall'archivio di Configurazione app in un secondo momento.

Il file GreetingResourceTest.java contiene lo unit test per il servizio REST. Modificare questo file per verificare che il valore restituito dal servizio REST sia uguale al valore nello store di Configurazione dell'app successivamente.

Connettersi a un archivio di Configurazione app

Ora che si dispone di uno store di configurazione delle app e di un'app Quarkus con l'estensione Azure App Configuration, è possibile connettere l'app allo store.

Codice dell'applicazione

Configurare l'applicazione attenendosi alla procedura seguente:

  1. Aprire il file GreetingResource.java nella directory src/main/java/com/example e sostituire il contenuto con il codice seguente:

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

    Il codice modificato usa l'annotazione MicroProfile Config @ConfigProperty per inserire il valore della chiave /application/config.message dall'archivio di Configurazione app nel value campo e restituisce il valore nel servizio REST.

  2. Aprire lo unit test generato automaticamente, che si trova nel file GreetingResourceTest.java nella directory src/test/java/com/example . Sostituire il contenuto del file con il codice seguente:

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

    Il codice modificato asserisce che il valore restituito dal servizio REST è uguale al valore nell'archivio di Configurazione app. Questo valore è Hello relativo alla chiave /application/config.message aggiunta in precedenza.

Queste modifiche al codice apportate all'applicazione sono tutte necessarie. Prima di eseguire l'applicazione, è necessario configurare l'autenticazione e la connessione all'archivio di Configurazione app.

Configurare l'autenticazione su App Configuration store

Oltre all'autenticazione con le chiavi di accesso, l'estensione Configurazione app di Azure Quarkus supporta l'autenticazione con l'ID Microsoft Entra usando DefaultAzureCredential dalla libreria client di Identità di Azure.

In questa guida introduttiva si userà l'ID Microsoft Entra per l'autenticazione. Per altre informazioni, vedere DefaultAzureCredential la libreria client di Identità di Azure per Java.

Configurare l'autenticazione nello store di configurazione dell'app seguendo i passaggi seguenti:

  1. Impostare le variabili di ambiente usando i comandi seguenti, sostituendo i <...> segnaposto con i valori creati in precedenza:

    export RESOURCE_GROUP_NAME="<resource-group-name>"
    export APP_CONFIG_NAME="<app-configuration-store-name>"
    
  2. Usare i comandi seguenti per assegnare il App Configuration Data Reader ruolo all'utente connesso:

    # 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. Esporta l'endpoint dell'archivio di Configurazione app in una variabile di ambiente denominata QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT usando il comando seguente:

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

    Annotazioni

    Il valore della variabile di ambiente viene usato nella proprietà QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT di configurazione dell'estensione Configurazione app di Azure Quarkus per configurare quarkus.azure.app.configuration.endpoint la connessione all'archivio di Configurazione app di Azure. In alternativa, è possibile configurare questa proprietà nel file application.properties nella directory src/main/resources impostandola direttamente, come nell'esempio seguente. Assicurarsi di sostituire <your-app-configuration-store-endpoint> con il valore effettivo.

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

Compilare ed eseguire l'app in locale

Compilare ed eseguire l'app in locale seguendo questa procedura:

  1. Usare i comandi seguenti per compilare ed eseguire l'app in modalità JVM:

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

    Annotazioni

    In alternativa, è possibile eseguire l'esempio in modalità nativa. Per usare la modalità nativa, è necessario installare GraalVM o usare un'immagine del generatore per compilare l'eseguibile nativo. Per altre informazioni, vedere Compilazione di un eseguibile nativo. Questa guida introduttiva rapida utilizza Docker come ambiente di runtime del contenitore per creare un eseguibile nativo per Linux. Se Docker non è installato, è possibile scaricarlo dal sito Web Docker.

    Usare i comandi seguenti per compilare ed eseguire l'eseguibile nativo in un ambiente Linux:

    mvn package -Dnative -Dquarkus.native.container-build
    ./target/storage-blob-1.0.0-SNAPSHOT-runner
    
  2. Testare l'applicazione usando il comando seguente:

    curl localhost:8080/hello
    

    Dovresti vedere Hello nell'output, perché Hello è il valore della chiave /application/config.message che hai aggiunto all'archivio di configurazione delle app.

  3. Premere CTRL+C per arrestare l'applicazione.

Pulire le risorse

Per evitare addebiti di Azure, è consigliabile pulire le risorse non necessarie. Quando non è più necessario l'archivio di Configurazione app, usare il comando seguente per rimuovere il gruppo di risorse e tutte le risorse correlate:

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

Vedere anche