@Cacheable, @CachePut și @CacheEvict în Spring în Spring Boot

cache Spring Boot 3.x / Spring Cache Q&A / Distribuie cod

Caching declarativ în memorie: reducerea încărcării bazei de date și a latenței prin adnotările standard Spring Cache.

Sintaxă
@Cacheable(value = "products", key = "#id") / @CacheEvict(allEntries = true)

Pentru interogările costisitoare de baze de date care returnează aceleași date pentru apeluri identice, Spring oferă o abstracție puternică de caching declarativ activată prin @EnableCaching.

  • @Cacheable("numeCache"): Verifică mai întâi dacă rezultatul se află deja în cache; dacă da, îl returnează direct fără a mai apela metoda.
  • @CachePut("numeCache"): Execută întotdeauna metoda și actualizează valoarea din cache cu noul rezultat.
  • @CacheEvict("numeCache"): Șterge una sau toate intrările din cache la modificarea datelor de bază.
Exemplu: Serviciu cu caching pe citire și invalidare la actualizare
package ro.dexblog.demo.service;

import org.springframework.cache.annotation.*;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Service;

@Configuration
@EnableCaching
class CacheConfig {}

@Service
public class ProductCatalogService {

    @Cacheable(value = "products", key = "#id")
    public String getProductDetails(Long id) {
        System.out.println("Interogare grea SQL executată pentru produsul ID: " + id);
        return "Detalii Produs #" + id;
    }

    @CacheEvict(value = "products", key = "#id")
    public void updateProduct(Long id, String newName) {
        System.out.println("Produs salvat. Invalidare cheie în cache pentru ID: " + id);
    }
}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: @Cacheable, @CachePut și @CacheEvict în Spring

Ai o nelămurire despre utilizarea comenzii @Cacheable, @CachePut și @CacheEvict în Spring sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.