@Cacheable, @CachePut, @CacheEvict
Styr caching-adfærden præcist.
@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
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
- Spring Cache-abstraktionen
- @Cacheable, @CachePut, @CacheEvict
- Redis som cacheudbyder
- Cache-TTL og ugyldiggørelse