Exercício – Criar um aplicativo Spring Boot que usa o Spring Data Redis
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
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; } }
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> { }
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
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
. QuandoprovisioningState
tiver o valorSucceeded
, 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'
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
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
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 Cache do Azure para Redis a fim de armazenar dados de sessão HTTP por meio do Spring Session.