Exercício – Criar um aplicativo Spring Boot que usa o Spring Data Redis

Concluído

Nesta unidade, você criará um aplicativo Spring Boot que usa o Spring Data Redis para armazenar e recuperar dados do Cache do Azure para Redis. É possível criar o aplicativo, exceto pela conexão final com o Cache do Azure para Redis, enquanto você aguarda a conclusão da implantação da instância desse produto.

Criar o projeto Spring Boot

Para criar o projeto Spring Boot, execute a seguinte linha de comando Spring Initializr:

curl https://start.spring.io/starter.tgz -d type=maven-project -d dependencies=web,data-redis -d baseDir=spring-redis-application -d bootVersion=2.4.1.RELEASE -d javaVersion=1.8 | tar -xzvf -

Observação

O comando usa os componentes Spring Web e Spring Data Redis. Spring Data Redis usa o driver Lettuce do Redis, que também pode ser usado para tarefas mais avançadas.

Adicionar códigos Spring para gerenciar dados

  1. No projeto Spring Boot, ao lado da classe DemoApplication, adicione um objeto de domínio Todo da seguinte forma:

    package com.example.demo;
    
    import org.springframework.data.annotation.Id;
    import org.springframework.data.redis.core.RedisHash;
    
    import java.io.Serializable;
    
    @RedisHash("Todo")
    public class Todo implements Serializable {
    
        public Todo() {
        }
    
        public Todo(String description, String details, boolean done) {
            this.description = description;
            this.details = details;
            this.done = done;
        }
    
        @Id
        private Long id;
    
        private String description;
    
        private String details;
    
        private boolean done;
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getDescription() {
            return description;
        }
    
        public void setDescription(String description) {
            this.description = description;
        }
    
        public String getDetails() {
            return details;
        }
    
        public void setDetails(String details) {
            this.details = details;
        }
    
        public boolean isDone() {
            return done;
        }
    
        public void setDone(boolean done) {
            this.done = done;
        }
    }
    
  2. Crie um repositório do Spring Data Redis chamado TodoRepository para gerenciar essa coleção, da seguinte forma:

    package com.example.demo;
    
    import org.springframework.data.repository.CrudRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public interface TodoRepository extends CrudRepository<Todo, String> {
    
    }
    
  3. Adicione um controlador Spring MVC chamado TodoController, da seguinte forma:

     package com.example.demo;
    
    import org.springframework.http.HttpStatus;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    @RequestMapping("/")
    public class TodoController {
    
        private final TodoRepository todoRepository;
    
        public TodoController(TodoRepository todoRepository) {
            this.todoRepository = todoRepository;
        }
    
        @PostMapping("/")
        @ResponseStatus(HttpStatus.CREATED)
        public Todo createTodo(@RequestBody Todo todo) {
            return todoRepository.save(todo);
        }
    
        @GetMapping("/")
        public Iterable<Todo> findAllTodos() {
            return todoRepository.findAll();
        }
    }
    

Obter chaves de segurança do Cache do Azure para Redis

  1. Execute o seguinte comando para verificar se a instância do Cache do Azure para Redis está pronta para uso.

    az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP
    

    O comando retorna dados JSON que contêm um atributo provisioningState. Quando provisioningState tiver o valor Succeeded, a instância do Cache do Azure para Redis estará totalmente disponível.

    Dica

    Se você tiver o utilitário jq, será possível usar a seguinte linha de comando para verificar a prontidão:

    az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP | jq '.provisioningState'
    
  2. Quando a instância do Cache do Azure para Redis estiver pronta, execute o seguinte comando para recuperar as chaves de segurança:

    az redis list-keys \
        --resource-group $AZ_RESOURCE_GROUP \
        --name $AZ_REDIS_NAME
    

    Copie o valor primaryKey da saída para usar na próxima etapa.

Configurar o Spring Boot para se conectar ao Cache do Azure para Redis

Abra o arquivo de configuração src/main/resources/application.properties no aplicativo e inclua as propriedades a seguir. Substitua o espaço reservado <redisName> pelo nome da instância do Redis e o espaço reservado <redisPrimaryKey> pelo valor primaryKey obtido na etapa anterior.

spring.redis.host=<redisName>.redis.cache.windows.net
spring.redis.password=<redisPrimaryKey>
spring.redis.port=6380
spring.redis.ssl=true

Testar o aplicativo localmente

  1. Execute o aplicativo Spring Boot executando o executável DemoApplication no ambiente de desenvolvimento ou o plug-in Spring Boot Maven da seguinte forma:

    ./mvnw spring-boot:run
    
  2. Com o aplicativo em execução, armazene alguns dados no Redis usando o seguinte comando:

    curl -d '{"description":"a description", "details":"some details"}' -H "Content-Type: application/json" -X POST http://127.0.0.1:8080
    
  3. Agora recupere esses dados do Redis:

    curl http://127.0.0.1:8080
    

Vá para a próxima unidade para saber como usar o Cache do Azure para Redis a fim de armazenar dados de sessão HTTP por meio do Spring Session.