Übung: Erstellen einer Spring Boot-Anwendung, die Spring Data Redis verwendet

Abgeschlossen

In dieser Lerneinheit erstellen Sie eine Spring Boot-Anwendung, die Spring Data Redis verwendet, um Daten in Azure Cache for Redis zu speichern und abzurufen. Sie können die Anwendung erstellen (mit Ausnahme der abschließenden Verbindung mit Azure Cache for Redis), während Sie auf den Abschluss der Bereitstellung Ihrer Azure Cache for Redis-Instanz warten.

Erstellen eines Spring Boot-Projekts

Führen Sie zum Erstellen Ihres Spring Boot-Projekts die folgende Spring Initializr-Befehlszeile aus:

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 -

Hinweis

Der Befehl verwendet die Komponenten Spring Web und Spring Data Redis. Spring Data Redis verwendet den Lettuce-Redis-Treiber, den Sie auch für umfangreichere Aufgaben verwenden können.

Hinzufügen von Spring-Code zum Verwalten von Daten

  1. Fügen Sie in Ihrem Spring Boot-Projekt neben der DemoApplication-Klasse wie folgt ein Todo-Domänenobjekt hinzu:

    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. Erstellen Sie wie folgt ein Spring Data Redis-Repository namens TodoRepository, um diese Sammlung zu verwalten:

    package com.example.demo;
    
    import org.springframework.data.repository.CrudRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public interface TodoRepository extends CrudRepository<Todo, String> {
    
    }
    
  3. Fügen Sie wie folgt einen Spring MVC-Controller namens TodoController hinzu:

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

Abrufen von Azure Cache for Redis-Sicherheitsschlüsseln

  1. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Ihre Azure Cache for Redis-Instanz einsatzbereit ist.

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

    Der Befehl gibt JSON-Daten zurück, die ein provisioningState-Attribut enthalten. Wenn provisioningState den Wert Succeeded aufweist, ist Ihre Azure Cache for Redis-Instanz vollständig verfügbar.

    Tipp

    Wenn Sie über das Hilfsprogramm jq verfügen, können Sie die Bereitschaft mit der folgenden einzelnen Befehlszeile überprüfen:

    az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP | jq '.provisioningState'
    
  2. Wenn die Azure Cache for Redis-Instanz bereit ist, führen Sie den folgenden Befehl aus, um die Sicherheitsschlüssel abzurufen:

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

    Kopieren Sie den primaryKey-Wert zur Verwendung im nächsten Schritt.

Konfigurieren von Spring Boot zum Herstellen einer Verbindung zu Azure Cache for Redis

Öffnen Sie die Konfigurationsdatei src/main/resources/application.properties in Ihrer Anwendung, und fügen Sie die folgenden Eigenschaften hinzu. Ersetzen Sie den Platzhalter <redisName> durch den Namen Ihrer Redis-Instanz und den Platzhalter <redisPrimaryKey> durch den primaryKey-Wert, den Sie im vorherigen Schritt abgerufen haben.

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

Lokales Testen der Anwendung

  1. Führen Sie Ihre Spring Boot-Anwendung aus, indem Sie entweder in Ihrer Entwicklungsumgebung die ausführbare Datei zur DemoApplication oder das Spring Boot Maven-Plug-In wie folgt ausführen:

    ./mvnw spring-boot:run
    
  2. Wenn die Anwendung ausgeführt wird, speichern Sie mit dem folgenden Befehl einige Daten in Redis:

    curl -d '{"description":"a description", "details":"some details"}' -H "Content-Type: application/json" -X POST http://127.0.0.1:8080
    
  3. Rufen Sie diese Daten nun aus Redis ab:

    curl http://127.0.0.1:8080
    

Fahren Sie mit der nächsten Lerneinheit fort, um zu erfahren, wie Sie Azure Cache for Redis verwenden, um HTTP-Sitzungsdaten über Spring Session zu speichern.