0 Tage Serie
java / expert
Snippet

Laufzeit-Cache-Auswahl mit benutzerdefiniertem CacheResolver

Während @Cacheable normalerweise auf einen statischen Cache-Namen abzielt, ermöglicht CacheResolver die dynamische Bestimmung des Caches zur Laufzeit. Dies ist entscheidend für mandantenfähige Anwendungen, bei denen jeder Mandant einen isolierten Cache-Speicher haben muss.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
public class TenantCacheResolver extends AbstractCacheResolver {
public TenantCacheResolver(CacheManager cacheManager) {
super(cacheManager);
}
@Override
protected Collection<String> getCacheNames(CacheOperationInvocationContext<?> context) {
String tenantId = TenantContext.getTenantId();
return Collections.singletonList("cache_" + tenantId);
}
}
spring
Erklärung
1
extends AbstractCacheResolver
Erbt Basisfunktionalität zur Auflösung von Caches über einen CacheManager.
2
getCacheNames(CacheOperationInvocationContext<?> context)
Exponiert Metadaten über den Methodenaufruf (Argumente, Ziel), um den zu verwendenden Cache zu bestimmen.
3
return Collections.singletonList("cache_" + tenantId);
Konstruiert den Cache-Namen dynamisch basierend auf dem aktuellen Ausführungskontext.