Spring Boot 4-mikrotjenester og REST API-er · leksjon

@Cacheable, @CachePut, @CacheEvict

Styr bufreadferden nøyaktig.

Leksjon 2 av 413 trinn

@Cacheable, @CachePut, @CacheEvict er en gratis leksjon i Spring Boot 4-mikrotjenester og REST API-er på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Spring Boot 4-mikrotjenester og REST API-er, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Spring Boot 4-mikrotjenester og REST API-er inneholder totalt 4 leksjoner.

De tre hurtigbufferannotasjonene

Spring tilbyr tre hurtigbufferannotasjoner på metodennivå:

  • @Cacheable – les gjennom og lagre resultatet
  • @CachePut – kjør alltid og oppdater hurtigbufferen
  • @CacheEvict – fjern oppføringer

@Cacheable

@Cacheable kontrollerer hurtigbufferen først. Ved bom kjøres metoden, og resultatet lagres.

@Cacheable("products")
public Product findById(Long id) {
    return repository.findById(id).orElseThrow();
}

Betinget hurtigbufring

Bruk condition for å hurtigbufre bare når et predikat er oppfylt, og unless for å hoppe over hurtigbufring av bestemte resultater.

@Cacheable(value = "products",
    unless = "#result == null")
public Product findById(Long id) { ... }

@CachePut

@CachePut kjører alltid metoden og lagrer den returnerte verdien – ideelt for oppdateringsmetoder som skal oppdatere hurtigbufferen.

@CachePut(value = "products", key = "#product.id")
public Product update(Product product) {
    return repository.save(product);
}

Cacheable kontra CachePut

@Cacheable kan hoppe over metoden ved et treff, mens @CachePut aldri hopper over den. Bruk aldri begge på samme metode – virkemåtene er motstridende.

@CacheEvict

@CacheEvict fjerner en oppføring, vanligvis etter en sletting eller oppdatering som gjør hurtigbufrede data ugyldige.

@CacheEvict(value = "products", key = "#id")
public void delete(Long id) {
    repository.deleteById(id);
}

Tømme alt

Bruk allEntries = true for å tømme en hel cache på én gang.

@CacheEvict(value = "products", allEntries = true)
public void reloadAll() {
    // bulk refresh
}

Fjerne før eller etter

Som standard skjer tømmingen etter at metoden lykkes. Angi beforeInvocation = true for å tømme cachen selv om metoden kaster et unntak.

@CacheEvict(value = "products",
    allEntries = true, beforeInvocation = true)
public void risky() { ... }

Gruppere med @Caching

@Caching kombinerer flere cache-operasjoner på én metode.

@Caching(
    put = @CachePut(value = "products", key = "#p.id"),
    evict = @CacheEvict(value = "productList",
        allEntries = true))
public Product save(Product p) {
    return repository.save(p);
}

Konfigurasjon på klassenivå

@CacheConfig angir et standardnavn for cachen til alle metoder i en klasse, slik at du unngår gjentakelser.

@Service
@CacheConfig(cacheNames = "products")
public class ProductService {
    @Cacheable(key = "#id")
    public Product findById(Long id) { ... }
}

Forbehold ved selvkall

Cache-annotasjoner fungerer via proxyer, så en metode som kaller en annen cachelagret metode i samme klasse, omgår cachen. Kall via en separat bean.

Rask sjekk

Test forståelsen Deres av cache-annotasjonene.

Oppsummering

De har lært de tre cache-annotasjonene:

  • @Cacheable — lagre og bruk resultater på nytt
  • @CachePut — kjør alltid og oppdater
  • @CacheEvict — fjern oppføringer (allEntries, beforeInvocation)
  • Vær oppmerksom på proxy-forbeholdet ved selvkall
Gratis å komme i gang

Lær deg Java med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
24
Leksjoner
93

Ofte stilte spørsmål

Er leksjonen «@Cacheable, @CachePut, @CacheEvict» gratis?

Ja – hele teksten i «@Cacheable, @CachePut, @CacheEvict» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Spring Boot 4-mikrotjenester og REST API-er-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Spring Boot 4-mikrotjenester og REST API-er inneholder totalt 4 leksjoner.

Hva lærer jeg i «@Cacheable, @CachePut, @CacheEvict»?

Styr bufreadferden nøyaktig. Du øver på Spring Boot 4-mikrotjenester og REST API-er med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Spring Boot 4-mikrotjenester og REST API-er?

Ingen tidligere erfaring er nødvendig. Spring Boot 4-mikrotjenester og REST API-er på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «@Cacheable, @CachePut, @CacheEvict»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Spring Boot 4-mikrotjenester og REST API-er-leksjonen?

Ja. Alle Spring Boot 4-mikrotjenester og REST API-er-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Spring Cache-abstraksjonen
  2. @Cacheable, @CachePut, @CacheEvict
  3. Redis som cache-leverandør
  4. Cache-TTL og ugyldiggjøring
← Tilbake til Spring Boot 4-mikrotjenester og REST API-er