ciao!
sto facendo qualche test sul caching in spring boot.
ho aggiunto queste dipendenze:
codice:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.2.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>6.2.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
<version>3.3.2</version>
</dependency>
ho attivato il caching:
codice:
@SpringBootApplication
@EnableCaching
public class TestSpringbootJavaApplication {
public static void main(String[] args) {
SpringApplication.run(TestSpringbootJavaApplication.class, args);
}
}
ho creato un model che poi rappresenterà la mia tabella:
codice:
@Getter
@Setter
@AllArgsConstructor
public class Persona {
private Long id;
private String email;
}
ho creato un service che poi farà una query sul db:
codice:
@Service
public class PersonaService {
@Cacheable(value = "persone", key = "#id")
public Persona getById(Long id) {
// DO STUFF
CacheManager cacheManager = new SimpleCacheManager();
Cache cache = cacheManager.getCache("persone");
return new Persona(id, "email@email.it");
}
}
ecco, qui vorrei capire.
l'eventuale controllo che i dati siano in cache li fai la libreria in autonomia?
come faccio eventualmente a controllare che ci sia già qualcosa in cache?
per completezza il controller:
codice:
@RestController
@RequestMapping(path = "/test")
public class TestController {
@Autowired
PersonaService service;
@GetMapping(path = "/", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public String index() {
Persona persona = service.getById(10L);
JSONObject obj = new JSONObject();
obj.put(persona.getId(), persona.getEmail());
return String.valueOf(obj);
}
}