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);
}
}
Întrebări & Exemple de Cod:
@Cacheable, @CachePut și @CacheEvict în SpringAi o nelămurire despre utilizarea comenzii
@Cacheable, @CachePut și @CacheEvict în Springsau 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.