Guia de início rápido: Criar um aplicativo Quarkus Java com a Configuração de Aplicativo do Azure

Neste início rápido, você incorporará a Configuração de Aplicativos do Azure em um aplicativo Java Quarkus para centralizar o armazenamento e o gerenciamento de configurações de aplicativo separadas do código.

Pré-requisitos

Adicionar um par chave-valor

Adicione o seguinte par chave-valor ao repositório de Configuração de Aplicativos. Para obter mais informações sobre como adicionar pares chave-valor a um repositório usando a CLI do Azure, consulte Criar um valor-chave.

Key Value
/application/config.message Olá

Criar um aplicativo do Quarkus

Nesta seção, você criará um aplicativo Quarkus com a extensão configuração de aplicativo do Azure e a extensão REST. A extensão REST é usada para criar um serviço REST que retorna o valor de configuração do repositório de Configuração de Aplicativos. Para obter mais informações, consulte a Configuração de Aplicativos do Quarkus Azure.

Crie um aplicativo quarkus usando o seguinte comando:

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"

O aplicativo é criado em um novo diretório chamado quarkus-app-configuration. Aqui está a estrutura do aplicativo:

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

O arquivo pom.xml contém as dependências do aplicativo, incluindo a extensão configuração de aplicativo do Azure e a extensão REST. O XML a seguir é um exemplo típico:

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

O arquivo GreetingResource.java contém o serviço REST. Modifique esse arquivo para retornar o valor de configuração do repositório de Configuração de Aplicativos mais tarde.

O arquivo GreetingResourceTest.java contém o teste de unidade para o serviço REST. Modifique esse arquivo para afirmar que o valor retornado do serviço REST é igual ao valor no repositório de Configuração de Aplicativos posteriormente.

Conectar um repositório de Configuração de Aplicativos

Agora que você tem um repositório de Configuração de Aplicativos e um aplicativo Quarkus com a extensão de Configuração de Aplicativos do Azure, você pode conectar o aplicativo à loja.

Codificar o aplicativo

Configure o aplicativo usando as seguintes etapas:

  1. Abra o arquivo GreetingResource.java no diretório src/main/java/com/example e substitua o conteúdo pelo seguinte código:

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

    O código modificado usa a anotação de Configuração do MicroProfile @ConfigProperty para injetar o valor da chave /application/config.message do repositório de Configuração de Aplicativos no value campo e retorna o valor no serviço REST.

  2. Abra o teste de unidade gerado automaticamente, que está no arquivo GreetingResourceTest.java no diretório src/test/java/com/example . Substitua o conteúdo do arquivo pelo seguinte código:

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

    O código modificado afirma que o valor retornado do serviço REST é igual ao valor no repositório de Configuração de Aplicativos. Esse valor é Hello para a chave /application/config.message que você adicionou anteriormente.

Essas alterações de código no aplicativo são todas necessárias. Antes de executar o aplicativo, você precisa configurar a autenticação e a conexão com o repositório de Configuração de Aplicativos.

Configurar a autenticação para o repositório de Configuração de Aplicativos

Além da autenticação com chaves de acesso, a extensão de Configuração de Aplicativo do Quarkus para Azure oferece suporte à autenticação com Microsoft Entra ID usando DefaultAzureCredential da biblioteca de clientes de Identidade do Azure.

Use a ID do Microsoft Entra para autenticação neste início rápido. Para obter mais informações, consulte DefaultAzureCredential na biblioteca de cliente do Azure Identity para Java.

Configure a autenticação para o repositório de Configuração de Aplicativos usando as seguintes etapas:

  1. Defina variáveis de ambiente usando os seguintes comandos, substituindo os <...> placeholders pelos valores que você criou anteriormente:

    export RESOURCE_GROUP_NAME="<resource-group-name>"
    export APP_CONFIG_NAME="<app-configuration-store-name>"
    
  2. Use os seguintes comandos para atribuir a App Configuration Data Reader função ao usuário conectado:

    # 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. Exporte o ponto de extremidade do repositório de Configuração de Aplicativos para uma variável de ambiente nomeada QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT usando o seguinte comando:

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

    Observação

    O valor da variável QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT de ambiente é usado na propriedade quarkus.azure.app.configuration.endpoint de configuração da extensão configuração de aplicativo do Quarkus Azure para configurar a conexão com o repositório de Configuração de Aplicativos do Azure. Como alternativa, você pode configurar essa propriedade no arquivo application.properties no diretório src/main/resources definindo-a diretamente, como no exemplo a seguir. Certifique-se de substituir <your-app-configuration-store-endpoint> pelo valor real.

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

Compilar e executar o aplicativo localmente

Crie e execute o aplicativo localmente usando as seguintes etapas:

  1. Use os seguintes comandos para criar e executar o aplicativo no modo JVM:

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

    Observação

    Como alternativa, você pode executar o exemplo no modo nativo. Para usar o modo nativo, você precisa ter a GraalVM instalada ou usar uma imagem do construtor para criar o executável nativo. Para obter mais informações, consulte Como criar um executável nativo. Este início rápido usa o Docker como runtime de contêiner para criar um executável nativo do Linux. Se você não tiver o Docker instalado, poderá baixá-lo no site do Docker.

    Use os seguintes comandos para criar e executar o executável nativo em um ambiente do Linux:

    mvn package -Dnative -Dquarkus.native.container-build
    ./target/storage-blob-1.0.0-SNAPSHOT-runner
    
  2. Teste seu aplicativo usando o seguinte comando:

    curl localhost:8080/hello
    

    Você deve ver Hello na saída, porque Hello é o valor da /application/config.message chave que você adicionou ao repositório de Configuração de Aplicativos.

  3. Pressione o Controle+C para interromper o aplicativo.

Limpar os recursos

Para evitar cobranças do Azure, limpe recursos desnecessários. Quando você não precisar mais do repositório de Configuração de Aplicativos, use o seguinte comando para remover o grupo de recursos e todos os recursos relacionados:

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

Consulte também