Exercice - Créer une application Spring Boot qui utilise Spring Data Redis

Effectué

Dans cette unité, vous allez créer une application Spring Boot qui utilise Spring Data Redis pour stocker et récupérer des données dans Azure Cache pour Redis. Vous pouvez créer l’application, à l’exception de la connexion finale à Azure Cache pour Redis, en attendant que le déploiement de votre instance Azure Cache pour Redis se termine.

Créer le projet Spring Boot

Pour créer votre projet Spring Boot, exécutez la ligne de commande Spring Initializr suivante :

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 -

Notes

La commande utilise les composants Spring Web et Spring Data Redis. Spring Data Redis utilise le pilote Redis Lettuce, que vous pouvez également utiliser pour des tâches plus avancées.

Ajouter du code Spring pour gérer les données

  1. Dans votre projet Spring Boot, à côté de la classe DemoApplication, ajoutez un objet de domaine Todo, comme suit :

    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. Créez un dépôt Spring Data Redis appelé TodoRepository pour gérer cette collection, comme suit :

    package com.example.demo;
    
    import org.springframework.data.repository.CrudRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public interface TodoRepository extends CrudRepository<Todo, String> {
    
    }
    
  3. Ajoutez un contrôleur Spring MVC appelé TodoController, comme suit :

     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();
        }
    }
    

Obtenir les clés de sécurité d’Azure Cache pour Redis

  1. Exécutez la commande suivante pour vérifier si votre instance Azure Cache pour Redis est prête à l’emploi.

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

    La commande retourne des données JSON qui contiennent un attribut provisioningState. Quand provisioningState a la valeur Succeeded, votre instance Azure Cache pour Redis est totalement disponible.

    Conseil

    Si vous disposez de l’utilitaire jq, vous pouvez entrer la ligne de commande suivante pour vérifier l’état de la préparation :

    az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP | jq '.provisioningState'
    
  2. Quand l’instance Azure Cache pour Redis est prête, exécutez la commande suivante pour récupérer ses clés de sécurité :

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

    Copiez la valeur primaryKey de la sortie pour l’utiliser à l’étape suivante.

Configurer Spring Boot pour se connecter à Azure Cache pour Redis

Ouvrez le fichier de configuration src/main/resources/application.properties dans votre application et ajoutez les propriétés suivantes. Remplacez l’espace réservé <redisName> par le nom de votre instance Redis, puis remplacez l’espace réservé <redisPrimaryKey> par la valeur primaryKey obtenue à l’étape précédente.

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

Tester localement l’application

  1. Exécutez votre application Spring Boot, soit en lançant l’exécutable DemoApplication dans votre environnement de développement, soit en exécutant le plug-in Spring Boot Maven comme suit :

    ./mvnw spring-boot:run
    
  2. Une fois l’application en cours d’exécution, stockez des données dans Redis à l’aide de la commande suivante :

    curl -d '{"description":"a description", "details":"some details"}' -H "Content-Type: application/json" -X POST http://127.0.0.1:8080
    
  3. Récupérez maintenant ces données à partir de Redis :

    curl http://127.0.0.1:8080
    

Passez à l’unité suivante qui examine comment utiliser Azure Cache pour Redis afin de stocker des données de session HTTP avec Spring Session.