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

Neste início rápido, você incorpora a Configuração do Aplicativo do Azure em um aplicativo Java Quarkus para centralizar o armazenamento e o gerenciamento das configurações do aplicativo separadamente do seu código.

Pré-requisitos

Adicionar um par chave-valor

Adicione o seguinte par chave-valor à loja 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 Valor
/aplicativo/config.message Hello (Olá)

Criar um aplicativo Quarkus

Nesta seção, você cria um aplicativo Quarkus com a extensão Configuração do 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 da App Configuration store. Para obter mais informações, consulte Configuração do aplicativo 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 do 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. Você modifica esse arquivo para retornar o valor de configuração da App Configuration Store mais tarde.

O arquivo GreetingResourceTest.java contém o teste de unidade para o serviço REST. Você modifica esse arquivo para afirmar que o valor retornado do serviço REST é igual ao valor na App Configuration Store posteriormente.

Conectar-se a uma loja de configuração de aplicativos

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

Codificar a aplicação

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 MicroProfile Config @ConfigProperty para injetar o valor da chave /application/config.message da App Configuration store 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 na App Configuration store. 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 a App Configuration Store.

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 Quarkus para Configuração de Aplicativos do Azure dá suporte à autenticação com o Microsoft Entra ID usando DefaultAzureCredential da biblioteca de cliente do Azure Identity.

Você usa o Microsoft Entra ID para autenticação neste início rápido. Para obter mais informações, consulte DefaultAzureCredential em Biblioteca de cliente do Azure Identity para Java.

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

  1. Configure as variáveis de ambiente usando os seguintes comandos, substituindo os <...> marcadores pelos valores criados 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 da App Configuration Store 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 de ambiente QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT é usado na propriedade de configuração quarkus.azure.app.configuration.endpoint da extensão Quarkus Azure App Configuration para configurar a conexão com a loja 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 seu valor real.

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

Crie e execute 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 o GraalVM instalado ou usar uma imagem do construtor para criar o executável nativo. Para obter mais informações, consulte Criando um executável nativo. Este início rápido usa o Docker como runtime de container para compilar um executável nativo do Linux. Se você não tiver o Docker instalado, poderá baixá-lo do site do Docker.

    Use os seguintes comandos para construir e executar o executável nativo em um ambiente 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 /application/config.message valor da chave que você adicionou à App Configuration Store.

  3. Pressione Control+C para parar o aplicativo.

Limpeza de recursos

Para evitar cobranças do Azure, você deve limpar recursos desnecessários. Quando não precisar mais da App Configuration Store, 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