Ćwiczenie — tworzenie aplikacji Spring Boot korzystającej z usługi Spring Data Redis

Ukończone

W tej lekcji utworzysz aplikację Spring Boot, która używa usługi Spring Data Redis do przechowywania i pobierania danych z usługi Azure Cache for Redis. Możesz utworzyć aplikację, z wyjątkiem końcowego połączenia z usługą Azure Cache for Redis, podczas gdy czekasz na zakończenie wdrażania wystąpienia usługi Azure Cache for Redis.

Tworzenie projektu Spring Boot

Aby utworzyć projekt Spring Boot, uruchom następujący wiersz polecenia 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 -

Uwaga

Polecenie używa składników Spring Web i Spring Data Redis . Spring Data Redisużywa sterownika Lettuce Redis, którego można również używać do wykonywania bardziej zaawansowanych zadań.

Dodawanie kodu Spring w celu zarządzania danymi

  1. W projekcie Spring Boot obok klasy DemoApplication dodaj obiekt domeny Todo w następujący sposób:

    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. Utwórz repozytorium Spring Data Redis o nazwie TodoRepository , aby zarządzać tą kolekcją w następujący sposób:

    package com.example.demo;
    
    import org.springframework.data.repository.CrudRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public interface TodoRepository extends CrudRepository<Todo, String> {
    
    }
    
  3. Dodaj kontroler Spring MVC o nazwie TodoController w następujący sposób:

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

Uzyskiwanie kluczy zabezpieczeń usługi Azure Cache for Redis

  1. Uruchom następujące polecenie, aby sprawdzić, czy wystąpienie usługi Azure Cache for Redis jest gotowe do użycia.

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

    Polecenie zwraca dane JSON zawierające provisioningState atrybut. Jeśli provisioningState ma wartość Succeeded, wystąpienie usługi Azure Cache for Redis jest w pełni dostępne.

    Napiwek

    Jeśli masz narzędzie jq , możesz użyć następującego pojedynczego wiersza polecenia, aby sprawdzić gotowość:

    az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP | jq '.provisioningState'
    
  2. Gdy wystąpienie usługi Azure Cache for Redis jest gotowe, uruchom następujące polecenie, aby pobrać jego klucze zabezpieczeń:

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

    primaryKey Skopiuj wartość z danych wyjściowych do użycia w następnym kroku.

Konfigurowanie platformy Spring Boot do nawiązywania połączenia z usługą Azure Cache for Redis

Otwórz plik konfiguracji src/main/resources/application.properties w aplikacji i dodaj następujące właściwości. <redisName> Zastąp symbol zastępczy nazwą wystąpienia usługi Redis i zastąp <redisPrimaryKey> symbol zastępczy wartością primaryKey uzyskaną z poprzedniego kroku.

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

Testowanie aplikacji w środowisku lokalnym

  1. Uruchom aplikację Spring Boot, uruchamiając plik wykonywalny DemoApplication w środowisku projektowym lub uruchamiając wtyczkę Spring Boot Maven w następujący sposób:

    ./mvnw spring-boot:run
    
  2. Po uruchomieniu aplikacji zapisz dane w usłudze Redis przy użyciu następującego polecenia:

    curl -d '{"description":"a description", "details":"some details"}' -H "Content-Type: application/json" -X POST http://127.0.0.1:8080
    
  3. Teraz pobierz te dane z usługi Redis:

    curl http://127.0.0.1:8080
    

Przejdź do następnej lekcji, aby dowiedzieć się, jak używać usługi Azure Cache for Redis do przechowywania danych sesji HTTP za pośrednictwem sesji Spring.