@Cacheable, @CachePut, @CacheEvict
Regel cachinggedrag nauwkeurig.
@Cacheable, @CachePut, @CacheEvict is een gratis Spring Boot 4-microservices en REST-API's-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Spring Boot 4-microservices en REST-API's. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Spring Boot 4-microservices en REST-API's bevat in totaal 4 lessen.
De drie cache-annotaties
Spring biedt drie cache-annotaties op methodeniveau:
@Cacheable— lees door vanuit de cache en sla het resultaat op@CachePut— voer altijd uit en werk de cache bij@CacheEvict— verwijder vermeldingen
@Cacheable
@Cacheable controleert eerst de cache; bij een miss voert het de methode uit en slaat het het resultaat op.
@Cacheable("products")
public Product findById(Long id) {
return repository.findById(id).orElseThrow();
}Voorwaardelijk cachen
Gebruik condition om alleen te cachen wanneer een predicaat waar is, en unless om het cachen van bepaalde resultaten over te slaan.
@Cacheable(value = "products",
unless = "#result == null")
public Product findById(Long id) { ... }@CachePut
@CachePut voert de methode altijd uit en slaat de geretourneerde waarde op — ideaal voor updatemethoden die de cache moeten vernieuwen.
@CachePut(value = "products", key = "#product.id")
public Product update(Product product) {
return repository.save(product);
}Cacheable versus CachePut
@Cacheable kan de methode bij een treffer overslaan; @CachePut slaat de methode nooit over. Gebruik beide nooit op dezelfde methode — hun gedrag conflicteert.
@CacheEvict
@CacheEvict verwijdert een vermelding, meestal na een verwijdering of wijziging waardoor gecachete gegevens ongeldig zijn geworden.
@CacheEvict(value = "products", key = "#id")
public void delete(Long id) {
repository.deleteById(id);
}Alles verwijderen
Gebruik allEntries = true om een volledige cache in één keer te wissen.
@CacheEvict(value = "products", allEntries = true)
public void reloadAll() {
// bulk refresh
}Verwijderen vóór of na afloop
Standaard worden items na een geslaagde uitvoering verwijderd. Stel beforeInvocation = true in om items ook te verwijderen als de methode een fout veroorzaakt.
@CacheEvict(value = "products",
allEntries = true, beforeInvocation = true)
public void risky() { ... }Groeperen met @Caching
@Caching combineert meerdere cachebewerkingen op één methode.
@Caching(
put = @CachePut(value = "products", key = "#p.id"),
evict = @CacheEvict(value = "productList",
allEntries = true))
public Product save(Product p) {
return repository.save(p);
}Configuratie op klassenniveau
@CacheConfig stelt een standaardcachenaam in voor alle methoden in een klasse, zodat je minder hoeft te herhalen.
@Service
@CacheConfig(cacheNames = "products")
public class ProductService {
@Cacheable(key = "#id")
public Product findById(Long id) { ... }
}Aandachtspunt bij aanroepen binnen dezelfde klasse
Cache-annotaties werken via proxies. Een methode die een andere gecachete methode in dezelfde klasse aanroept, omzeilt de cache daarom. Roep de methode aan via een afzonderlijke bean.
Korte kennistest
Test je begrip van de cache-annotaties.
Samenvatting
Je hebt de vier cache-annotaties geleerd:
@Cacheable— resultaten opslaan en hergebruiken@CachePut— altijd uitvoeren en vernieuwen@CacheEvict— items verwijderen (allEntries,beforeInvocation)- Let op het aandachtspunt rond proxy's bij aanroepen binnen dezelfde klasse
Leer Java met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 24
- Lessen
- 93
Veelgestelde vragen
Is de les “@Cacheable, @CachePut, @CacheEvict” gratis?
Ja — de volledige tekst van “@Cacheable, @CachePut, @CacheEvict” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Spring Boot 4-microservices en REST-API's wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Spring Boot 4-microservices en REST-API's bevat in totaal 4 lessen.
Wat leer ik in “@Cacheable, @CachePut, @CacheEvict”?
Regel cachinggedrag nauwkeurig. Je oefent met Spring Boot 4-microservices en REST-API's door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Spring Boot 4-microservices en REST-API's te beginnen?
Ervaring vooraf is niet nodig. Spring Boot 4-microservices en REST-API's op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “@Cacheable, @CachePut, @CacheEvict”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Spring Boot 4-microservices en REST-API's?
Ja. Elke les over Spring Boot 4-microservices en REST-API's bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- De Spring Cache-abstractie
- @Cacheable, @CachePut, @CacheEvict
- Redis als cacheprovider
- Cache-TTL en invalidatie