@Cacheable, @CachePut, @CacheEvict
Styr cachebeteendet exakt.
@Cacheable, @CachePut, @CacheEvict är en gratis lektion i Spring Boot 4-mikrotjänster och REST API:er på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Spring Boot 4-mikrotjänster och REST API:er, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Spring Boot 4-mikrotjänster och REST API:er innehåller totalt 4 lektioner.
De tre cacheannoteringarna
Spring erbjuder tre cacheannoteringar på metodnivå:
@Cacheable— läs igenom cachen och lagra resultatet@CachePut— kör alltid och uppdatera cachen@CacheEvict— ta bort poster
@Cacheable
@Cacheable kontrollerar cachen först. Vid en miss körs metoden och resultatet lagras.
@Cacheable("products")
public Product findById(Long id) {
return repository.findById(id).orElseThrow();
}Villkorad cachning
Använd condition för att cacha endast när ett predikat är uppfyllt och unless för att hoppa över cachning av vissa resultat.
@Cacheable(value = "products",
unless = "#result == null")
public Product findById(Long id) { ... }@CachePut
@CachePut kör alltid metoden och lagrar det returnerade värdet — idealiskt för uppdateringsmetoder som ska uppdatera cachen.
@CachePut(value = "products", key = "#product.id")
public Product update(Product product) {
return repository.save(product);
}Cacheable kontra CachePut
@Cacheable kan hoppa över metoden vid en träff; @CachePut hoppar aldrig över den. Använd aldrig båda på samma metod — deras beteenden står i konflikt.
@CacheEvict
@CacheEvict tar bort en post, vanligtvis efter en borttagning eller uppdatering som gör cachad data ogiltig.
@CacheEvict(value = "products", key = "#id")
public void delete(Long id) {
repository.deleteById(id);
}Rensa allt
Använd allEntries = true för att rensa en hel cache på en gång.
@CacheEvict(value = "products", allEntries = true)
public void reloadAll() {
// bulk refresh
}Rensa före eller efter
Som standard sker rensningen efter att metoden har lyckats. Ange beforeInvocation = true för att rensa även om metoden kastar ett undantag.
@CacheEvict(value = "products",
allEntries = true, beforeInvocation = true)
public void risky() { ... }Gruppering med @Caching
@Caching kombinerar flera cacheåtgärder på en metod.
@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å klassnivå
@CacheConfig anger ett standardnamn för cachen för alla metoder i en klass, vilket minskar upprepning.
@Service
@CacheConfig(cacheNames = "products")
public class ProductService {
@Cacheable(key = "#id")
public Product findById(Long id) { ... }
}Begränsning vid självanrop
Cacheannoteringar fungerar via proxyer, så en metod som anropar en annan cachad metod i samma klass kringgår cachen. Anropa via en separat bean.
Snabb kontroll
Testa hur väl du förstår cacheannoteringarna.
Sammanfattning
Du har lärt dig de tre cacheannoteringarna:
@Cacheable— lagra och återanvänd resultat@CachePut— kör alltid och uppdatera@CacheEvict— ta bort poster (allEntries,beforeInvocation)- Var uppmärksam på begränsningen med proxyer vid självanrop
Lär dig Java med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 24
- Lektioner
- 93
Vanliga frågor
Är lektionen ”@Cacheable, @CachePut, @CacheEvict” gratis?
Ja – hela texten till ”@Cacheable, @CachePut, @CacheEvict” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Spring Boot 4-mikrotjänster och REST API:er, kan Ni uppgradera till CoddyKit PRO. Kursen i Spring Boot 4-mikrotjänster och REST API:er innehåller totalt 4 lektioner.
Vad lär jag mig i ”@Cacheable, @CachePut, @CacheEvict”?
Styr cachebeteendet exakt. Ni övar på Spring Boot 4-mikrotjänster och REST API:er med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Spring Boot 4-mikrotjänster och REST API:er?
Du behöver inga förkunskaper. Utbildningen i Spring Boot 4-mikrotjänster och REST API:er på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”@Cacheable, @CachePut, @CacheEvict”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Spring Boot 4-mikrotjänster och REST API:er-lektionen?
Ja. Varje Spring Boot 4-mikrotjänster och REST API:er-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Spring Cache-abstraktionen
- @Cacheable, @CachePut, @CacheEvict
- Redis som cacheleverantör
- Cache-TTL och ogiltigförklaring