Spring Boot 4-mikrotjenester og REST-API'er · Lektion

@Cacheable, @CachePut, @CacheEvict

Styr caching-adfærden præcist.

Lektion 2 af 413 trin

@Cacheable, @CachePut, @CacheEvict er en gratis Spring Boot 4-mikrotjenester og REST-API'er-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Spring Boot 4-mikrotjenester og REST-API'er, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Spring Boot 4-mikrotjenester og REST-API'er-kurset indeholder 4 lektioner i alt.

De tre cache-annotationer

Spring tilbyder tre cache-annotationer på metodeniveau:

  • @Cacheable — læs igennem, og gem resultatet
  • @CachePut — udfør altid, og opdatér cachen
  • @CacheEvict — fjern poster

@Cacheable

@Cacheable kontrollerer cachen først; ved et miss udfører den metoden og gemmer resultatet.

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

Betinget caching

Brug condition til kun at cache, når et prædikat er opfyldt, og unless til at springe caching af bestemte resultater over.

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

@CachePut

@CachePut udfører altid metoden og gemmer den returnerede værdi — ideelt til opdateringsmetoder, der skal opdatere cachen.

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

Cacheable kontra CachePut

@Cacheable kan springe metoden over ved et hit; @CachePut springer aldrig over. Anbring aldrig begge på den samme metode — deres adfærd er i konflikt.

@CacheEvict

@CacheEvict fjerner en post, typisk efter en sletning eller opdatering, der ugyldiggør cachede data.

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

Fjernelse af alt

Brug allEntries = true til at rydde en hel cache på én gang.

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

Udeluk før eller efter

Som standard sker udelukkelsen efter, at metoden lykkes. Sæt beforeInvocation = true for også at udelukke, hvis metoden kaster en fejl.

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

Gruppering med @Caching

@Caching kombinerer flere cachehandlinger 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);
}

Konfiguration på klasseniveau

@CacheConfig angiver et standardnavn for cachen for alle metoder i en klasse, så gentagelser reduceres.

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

Forbehold ved internt metodekald

Cache-annoteringer fungerer via proxyer, så en metode, der kalder en anden cachelagret metode i samme klasse, går uden om cachen. Kald via en separat bean.

Hurtigt tjek

Test din forståelse af cache-annoteringerne.

Opsummering

Du har lært de tre cache-annoteringer:

  • @Cacheable — gemmer og genbruger resultater
  • @CachePut — kører altid og opdaterer cachen
  • @CacheEvict — fjerner poster (allEntries, beforeInvocation)
  • Vær opmærksom på proxyforbeholdet ved interne metodekald
Gratis at komme i gang

Lær Java med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
24
Lektioner
93

Ofte stillede spørgsmål

Er lektionen “@Cacheable, @CachePut, @CacheEvict” gratis?

Ja — hele teksten til “@Cacheable, @CachePut, @CacheEvict” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Spring Boot 4-mikrotjenester og REST-API'er-kurset, skal du opgradere til CoddyKit PRO. Spring Boot 4-mikrotjenester og REST-API'er-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “@Cacheable, @CachePut, @CacheEvict”?

Styr caching-adfærden præcist. Du øver dig i Spring Boot 4-mikrotjenester og REST-API'er med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Spring Boot 4-mikrotjenester og REST-API'er?

Der kræves ingen tidligere erfaring. Spring Boot 4-mikrotjenester og REST-API'er på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “@Cacheable, @CachePut, @CacheEvict”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Spring Boot 4-mikrotjenester og REST-API'er-lektion?

Ja. Alle Spring Boot 4-mikrotjenester og REST-API'er-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Spring Cache-abstraktionen
  2. @Cacheable, @CachePut, @CacheEvict
  3. Redis som cacheudbyder
  4. Cache-TTL og ugyldiggørelse
← Tilbage til Spring Boot 4-mikrotjenester og REST-API'er