Esercizio - Creare un'applicazione Spring Boot che usa Spring Data Redis
In questa unità viene creata un'applicazione Spring Boot che usa Spring Data Redis per archiviare e recuperare i dati dalla cache di Azure per Redis. È possibile creare l'applicazione, ad eccezione della connessione finale alla cache di Azure per Redis, mentre si attende che l'istanza della cache di Azure per Redis completi la distribuzione.
Creare il progetto Spring Boot
Per creare il progetto Spring Boot, eseguire la riga di comando Spring Initializr seguente:
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
Il comando usa i componenti Spring Web
e Spring Data Redis
. Spring Data Redis
usa il driver Lettuce Redis, che è anche possibile usare per attività più avanzate.
Aggiungere il codice Spring per gestire i dati
Nel progetto Spring Boot, accanto alla classe DemoApplication, aggiungere un oggetto di dominio Todo come indicato di seguito:
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; } }
Creare un repository Spring Data Redis denominato TodoRepository per gestire questa raccolta, come indicato di seguito:
package com.example.demo; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; @Repository public interface TodoRepository extends CrudRepository<Todo, String> { }
Aggiungere un controller Spring MVC denominato TodoController, come indicato di seguito:
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(); } }
Ottenere le chiavi di sicurezza della cache di Azure per Redis
Eseguire il comando seguente per verificare se l'istanza della cache di Azure per Redis è pronta per l'uso.
az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP
Il comando restituisce i dati JSON che contengono un attributo
provisioningState
. QuandoprovisioningState
ha il valoreSucceeded
, l'istanza della cache di Azure per Redis è completamente disponibile.Suggerimento
Se si dispone dell'utilità jq, è possibile usare la riga di comando singola seguente per verificare la conformità:
az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP | jq '.provisioningState'
Quando l'istanza della cache di Azure per Redis è pronta, eseguire il comando seguente per recuperare le chiavi di sicurezza:
az redis list-keys \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_REDIS_NAME
Copiare il valore
primaryKey
dall'output da usare nel passaggio successivo.
Configurare Spring Boot per connettersi alla cache di Azure per Redis
Aprire il file di configurazione src/main/resources/application.properties nell’applicazione e aggiungere le proprietà seguenti. Sostituire il segnaposto <redisName>
con il nome dell'istanza Redis e sostituire il segnaposto <redisPrimaryKey>
con il valore primaryKey
ottenuto dal passaggio precedente.
spring.redis.host=<redisName>.redis.cache.windows.net
spring.redis.password=<redisPrimaryKey>
spring.redis.port=6380
spring.redis.ssl=true
Testare l'applicazione in locale
Eseguire l'applicazione Spring Boot eseguendo l'eseguibile DemoApplication nell'ambiente di sviluppo o eseguendo il plug-in Spring Boot Maven come indicato di seguito:
./mvnw spring-boot:run
Quando l'applicazione è in esecuzione, archiviare alcuni dati in Redis usando il seguente comando:
curl -d '{"description":"a description", "details":"some details"}' -H "Content-Type: application/json" -X POST http://127.0.0.1:8080
Ora recuperare i dati da Redis:
curl http://127.0.0.1:8080
Passiamo all'unità successiva per apprendere come usare la cache di Azure per Redis per archiviare i dati di sessione HTTP tramite Spring Session.