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
1
2
3
4
5
6
7
8
9
10
public class TenantCacheResolver extends AbstractCacheResolver {public TenantCacheResolver(CacheManager cacheManager) {super(cacheManager);}@Overrideprotected 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.