Exercício - Crie um aplicativo Spring Boot que use o Spring Data Redis
Nesta unidade, você cria um aplicativo Spring Boot que usa o Spring Data Redis para armazenar e recuperar dados do Cache do Azure para Redis. Você pode criar o aplicativo, exceto para a conexão final com o Cache do Azure para Redis, enquanto aguarda que sua instância do Cache do Azure para Redis conclua a implantação.
Criar o projeto Spring Boot
Para criar o seu projeto Spring Boot, execute o seguinte comando de linha do 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 componentes Spring Web
e Spring Data Redis
.
Spring Data Redis
usa o driver Lettuce Redis, que você também pode usar para tarefas mais avançadas.
Adicionar código Spring para gerenciar dados
Em seu projeto Spring Boot, ao lado da classe DemoApplication, adicione um objeto de domínio Todo da seguinte maneira:
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; } }
Crie um repositório Spring Data Redis chamado TodoRepository para gerenciar essa coleção, da seguinte maneira:
package com.example.demo; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; @Repository public interface TodoRepository extends CrudRepository<Todo, String> { }
Adicione um controlador Spring MVC chamado TodoController, da seguinte maneira:
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
Execute o seguinte comando para verificar se sua instância do Cache Redis do Azure 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
. QuandoprovisioningState
tem o valorSucceeded
, sua instância do Cache do Azure para Redis estará totalmente disponível.Dica
Se você tiver o utilitário jq, poderá usar a seguinte linha de comando única para verificar a prontidão:
az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP | jq '.provisioningState'
Quando a instância do Cache do Azure para Redis estiver pronta, execute o seguinte comando para recuperar suas 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 Redis do Azure
Abra o arquivo de configuração src/main/resources/application.properties em seu aplicativo e adicione as seguintes propriedades. Substitua o espaço reservado <redisName>
pelo nome da instância do Redis e substitua 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
Execute seu aplicativo Spring Boot, executando o executável DemoApplication em seu ambiente de desenvolvimento ou executando o plug-in Spring Boot Maven da seguinte maneira:
./mvnw spring-boot:run
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
Agora recupere esses dados do Redis:
curl http://127.0.0.1:8080
Vá para a próxima unidade para saber como usar o Azure Cache for Redis para armazenar dados de sessão HTTP com o Spring Session.