Ejercicio: Creación de una aplicación de Spring Boot que usa Spring Data Redis
En esta unidad, creará una aplicación de Spring Boot que usa Spring Data Redis para almacenar y recuperar datos de Azure Cache for Redis. Puede crear la aplicación, salvo por la última conexión a Azure Cache for Redis, mientras espera a que la instancia de Azure Cache for Redis finalice la implementación.
Creación del proyecto de Spring Boot
Para crear el proyecto de Spring Boot, ejecute la línea de comandos Spring Initializr siguiente:
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 -
Nota
El comando usa los componentes Spring Web
y Spring Data Redis
. Spring Data Redis
utiliza el controlador de Redis Lettuce, que también puede usar para tareas más avanzadas.
Incorporación de código de Spring para administrar datos
En el proyecto de Spring Boot, junto a la clase DemoApplication, agregue un objeto de dominio Todo de la siguiente manera:
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; } }
Cree un repositorio de Spring Data Redis denominado TodoRepository para administrar esta colección, como se indica a continuación:
package com.example.demo; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; @Repository public interface TodoRepository extends CrudRepository<Todo, String> { }
Agregue un controlador de Spring MVC con el nombre TodoController, de la manera siguiente:
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(); } }
Obtención de claves de seguridad de Azure Cache for Redis
Ejecute el siguiente comando para comprobar si la instancia de Azure Cache for Redis está lista para usarse.
az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP
El comando devuelve datos JSON que contienen un atributo
provisioningState
. CuandoprovisioningState
tiene el valorSucceeded
, la instancia de Azure Cache for Redis está totalmente disponible.Sugerencia
Si tiene la utilidad jq, puede usar la siguiente línea de comandos única para comprobar la preparación:
az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP | jq '.provisioningState'
Cuando la instancia de Azure Cache for Redis esté lista, ejecute el siguiente comando para recuperar sus claves de seguridad:
az redis list-keys \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_REDIS_NAME
Copie el valor
primaryKey
de la salida que se usará en el paso siguiente.
Configuración de Spring Boot para conectarse a Azure Cache for Redis
Abra el archivo de configuración src/main/resources/application.properties en la aplicación y agregue las siguientes propiedades. Reemplace el marcador de posición <redisName>
por el nombre de la instancia de Redis, y el marcador de posición <redisPrimaryKey>
por el valor primaryKey
que obtuvo del paso anterior.
spring.redis.host=<redisName>.redis.cache.windows.net
spring.redis.password=<redisPrimaryKey>
spring.redis.port=6380
spring.redis.ssl=true
Prueba de la aplicación de forma local
Ejecute la aplicación de Spring Boot, ya sea mediante el ejecutable DemoApplication en el entorno de desarrollo o el complemento Spring Boot de Maven de la siguiente manera:
./mvnw spring-boot:run
Con la aplicación en ejecución, almacene algunos datos en Redis mediante el siguiente comando:
curl -d '{"description":"a description", "details":"some details"}' -H "Content-Type: application/json" -X POST http://127.0.0.1:8080
Ahora recupere esos datos de Redis:
curl http://127.0.0.1:8080
Vaya a la siguiente unidad para obtener información sobre cómo usar Azure Cache for Redis para almacenar datos de sesión HTTP mediante Spring Session.